粗糙记录网站加载过慢的一次排查经历

2018/05/29
今天上班,程序员和我说测试环境的站点打开很慢,让我排查一下。作为菜鸟,还是首次遇到这样的问题,于是使用top查看系统资源,以CPU和内存分别排序查看,情况如下图:

粗糙记录网站加载过慢的一次排查经历

从负载上看load average: 0.51, 0.98, 1.12并无异常,这里说明一下服务器使用的是阿里云ECS,2vCPU4G。且看%CPU比例,用户态和系统态的CPU使用率并不高,可以暂且排除病毒侵入的情况。在使用netstat -tnl查看是否存在异常开启的端口。

[www@izuf64awewxccxye80z ~]$ netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:888             0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:42914           0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN     
tcp6       0      0 :::46710                :::*                    LISTEN     

从端口上看并未开启异常端口,于是查看阿里云监控数据,如下:

粗糙记录网站加载过慢的一次排查经历
粗糙记录网站加载过慢的一次排查经历
粗糙记录网站加载过慢的一次排查经历

从以上3张监控图发现CPU使用率在某一时刻急剧上升,磁盘读写量增加,网络流量增加,TCP连接数增加。由于测试环境的域名是不对外使用的,只有公司内部技术人员使用,于是查看是否存在TIME_WAIT状态过多,导致TCP连接过慢。

[www@izuf64awewxccxye80z ~]$ netstat -an |grep TIME_WAIT
......
tcp        0      0 192.168.100.171:36234   192.168.100.172:3306    TIME_WAIT  
tcp        0      0 192.168.100.171:48108   192.168.100.170:6379    TIME_WAIT  
tcp        0      0 192.168.100.171:48016   192.168.100.170:6379    TIME_WAIT  
tcp        0      0 192.168.100.171:47966   192.168.100.170:6379    TIME_WAIT  
tcp        0      0 127.0.0.1:53384         127.0.0.1:8081          TIME_WAIT  
tcp        0      0 192.168.100.171:48082   192.168.100.170:6379    TIME_WAIT  
tcp        0      0 192.168.100.171:47930   192.168.100.170:6379    TIME_WAIT  
tcp        0      0 127.0.0.1:53566         127.0.0.1:8081          TIME_WAIT  
......

从命令行查看,6379端口的TIME_WAIT数量较多,于是登陆阿里云Redis查看性能数据,发现在某些时段的QPS很高,高于生产环境的QPS,于是初步判断问题出在Redis上。如图:

粗糙记录网站加载过慢的一次排查经历

再次进行统计6379端口的TIME_WAIT数量,发现居然有3万多个......难怪网站打开慢了!!!最终解决:清空redis数据后,再重新加载网站正常。
注意:这里使用的Redis只作为程序的缓存使用!!!网站访问会优先从redis读取数据!

[www@izuf64awewxccxye80z ~]$ netstat -an |grep TIME_WAIT|grep 6379|wc -l
31526

至于TIME_WAIT优化可以参考一下链接:
http://blog.51cto.com/leven/382097

猜你喜欢

转载自blog.51cto.com/jinlong/2121896