前言
网站访问慢的原因是面试官最喜欢问的问题,这种问题并没有标准答案,你随便说几个原因即可,哪怕原因很离谱都没关系。
问这个问题的面试官,有一种情况是因为公司遇到了网站访问慢的问题,他们在解决这个问题的时候花了不少时间,所以印象深刻,想问问你有没有遇到过。 另一种情况就是觉得运维肯定是维护网站,维护网站应该会遇到网站访问慢的问题,于是随口就问了,答案不重要,重要的是你回答问题的坚定程度。
回答问题的思路
1. 先说排查思路
网站访问慢,但我们可以访问的情况下,使用f12打开调试模式查看网络状态,看看是哪些网页或者链接加载的速度慢,根据这些页面和链接查看数据的流向来判断每一层架构是否正常,然后根据具体的架构去调试。
另外我们也需要查看服务器端,线上服务器的情况,比如cpu负载,内存负载,网络带宽等是否过载。 查看数据库日志文件,慢查询日志等,分析造成数据库访问慢的原因。
当然必要情况下我们也需要查看程序日志,比如nginx,tomcat日志,找出报错原因,并协调开发一起查看是否是程序代码出现了问题。
2. 再说可能造成访问慢的原因
我总结了下,造成网站访问慢有这么几个原因:
-
服务器负载过大忙不过来,无法承担巨大的流量。
-
DNS解析慢
-
访问量过载
-
网站代码繁琐
-
站点存在大量的JS或者图片的调用
-
服务器出口带宽不够用。
-
数据库的瓶颈,数据库文件过大,造成读取缓慢,没有建立索引,造成每次查询都对数据库进行全局查询。
-
没有设置CDN。
-
、可能遭受到了分布式拒绝攻击即DDOS攻击或者中病毒木马。
-
死链:死链接是指残留的网站中不存在的页面,即网站改变前的页面,改动后删除此页面,但是搜索引擎已经收录了,这样的页面称为死链接,用户通过死链接访问是会出现打不开的现象(就是那些你点开出现404页面的页面)
3. 怎么优化网站打开速度
回答范例: 解决方案的话,针对不同的情况,有不同的方案,比如:
1.查看线上服务器的负载情况,CPU负载,内存负载,网络带宽,查看是否已经过载。
2.查看网络连接情况,是否受到DDOS攻击,消耗尽带宽资源,造成无法提供服务。
3.查看MySQL数据库的日志文件,查看mysql慢查询日志,查看造成MySQL访问过慢的原因。
4.可以查看应用程序的日志,如Apache,nginx,PHP,Tomcat日志文件,找出报错原因,查看是否是代码问题。
5.精简代码 (比如一些常见的死循环,数据库死锁等)
6.优化缓存
7.图片压缩(网站首页出现的图片,在加载过程中很耗时,首页越小越好)
8. 尽量不要放视频和flash,除非你是视频网站。
总结
有时候网站被攻击也会出现访问速度慢,比如DDOS攻击,但小网站出现攻击也不怕,比如我的wordpress这两天就有人在攻击,虽然不是量比较小,但是觉得他的攻击毫无价值,实在不行网站送你,一个个人站又不值钱。
我做了哪些操作:
- 写脚本发现持续访问的IP,量比较大的就屏蔽
- 把root用户禁止登陆,使用普通用户+超30位密码登陆
- 数据实时备份,并开启一个副站,一旦主站宕机随时启动副站运行
如果真被攻破了怎么办? 哈,一旦有用户登录系统,会发系统邮件给当前用户,拿出十足的诚意一起合作,反正闲着也是闲着,不如合作赚点钱啊。要不你要个破网站干啥,又没多少访问量