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
原文地址:http://blog.51cto.com/jinlong/2121896