1. 程式人生 > >粗糙記錄網站加載過慢的一次排查經歷

粗糙記錄網站加載過慢的一次排查經歷

TIME_WAIT redis

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

粗糙記錄網站加載過慢的一次排查經歷