一次网站分析与解决的经历,最后结果虽然很简单可是过程比较曲折.记录一下:
今天访问网站首页十分缓慢,页面半天都加载不出来.因而上服务器看看状况,经过top看到load和cpu以及磁盘io都很低,只能祭出神器dstat:
dstat
查看到流量很大,咱们使用的是阿里云的ecs服务器,带宽20m左右,能够看到流量已经达到了带宽上限.
因而立刻想到查看nginx服务器日志,可是日志庞大,绝大部分是jpg,js,css等静态资源,很难实际分析到问题.
接下来去百度搜索,如何查看服务器上的流量分配.很遗憾并无直接的答案,可是看到一个工具叫iftop,立刻apt-get下载之
iftop工具能够实时的列出网站当前的流量状况,主要以ip分隔.
上方的列表=>表示出流量,<=表示入流量.
底部三行是汇总:
第一列显示累计的出流量(TX),入流量(RX),总共(TOTAL)
第二列显示峰值带宽
最后一列显示平均的统计结果,分别是3s,5s,15s的统计结果,与top命令的load相似吧.
iftop
能够看到存在少数ip正在占用大量的带宽,这种状况能够想象到是正在下载大文件了,可是并不知道是什么文件. 但知道方向事情就好办了,仍是经过nginx日志,分析其中的一个大流量ip正在干什么...执行
> cat /var/log/nginx/access.log | grep 223.144.191.227 > ~/temp2.log
再来看这个时间点有什么可疑的下载.结果发现一个zip包,这个zip包是咱们的app的语音包,有50m以上,估计颇有多是它的问题了!
执行
> cat /var/log/nginx/access.log | grep /word_wg_voc.zip |more 部分结果以下:
能够看到是app的语音包下载出了问题: 连接后面的 200 后面的数字表明的是发送的字节数,而这里不少都不同,说明是下载不完整. 这也是带宽不足形成的后果...
知道了问题后就ok了,解决办法是:先临时提升带宽,同时配置cdn(由于cdn配置后须要把app从新发一个版本才能用上,有个几天的延迟,iphone app审核你懂得).
顺便打个广告,app叫知米背单词,你们有空能够来学学英语 :)