檢視網絡連接配接數:
netstat -an |wc -l
netstat -an |grep xx |wc -l 檢視某個/特定ip的連接配接數
netstat -an |grep TIME_WAIT|wc -l 檢視連接配接數等待time_wait狀态連接配接數
netstat -an |grep ESTABLISHED |wc -l 檢視建立穩定連接配接數量
檢視不同狀态的連接配接數數量
[root@cp-nginx ~]# netstat -an | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'
LISTEN 8
ESTABLISHED 2400
FIN_WAIT1 2
TIME_WAIT 6000
檢視每個ip跟伺服器建立的連接配接數
[root@cp-nginx ~]# netstat -nat|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn
31 45.116.147.178
20 45.116.147.186
12 23.234.45.34
11 103.56.195.17
(PS:正則解析:顯示第5列,-F : 以:分割,顯示列,sort 排序,uniq -c統計排序過程中的重複行,sort -rn 按純數字進行逆序排序)
檢視每個ip建立的ESTABLISHED/TIME_OUT狀态的連接配接數
[root@cp-nginx ~]# netstat -nat|grep ESTABLISHED|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn
24 103.56.195.17
19 45.116.147.186
18 103.56.195.18
17 45.116.147.178
問題1:解決time_wait連接配接數大量問題
查詢到time_wait連接配接數過多情況下,調整核心參數:/etc/sysctl.conf
vim /etc/sysctl.conf
添加以下配置檔案:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 300
/sbin/sysctl -p 讓參數生效,調優完成
參數詳解:
1.net.ipv4.tcp_syncookies = 1 表示開啟 syn cookies 。當出現 syn 等待隊列溢出時,啟用 cookies 來處理,可防範少量 syn 攻擊,預設為 0 ,表示關閉;
2.net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許将 time-wait sockets 重新用于新的 tcp 連接配接,預設為 0 ,表示關閉;
3.net.ipv4.tcp_tw_recycle = 1 表示開啟 tcp 連接配接中 time-wait sockets 的快速回收,預設為 0 ,表示關閉。
4.net.ipv4.tcp_fin_timeout 修改系靳預設的 timeout 時間
如果以上配置調優後性能還不理想,可繼續修改一下配置:
vi /etc/sysctl.conf
問題2:ESTABLISHED連接配接數過大問題
怎麼解決請求結束後依然存在大量ESTABLISHED沒有被釋放
初步推斷是tomcat伺服器回收session時出了問題,這個一般都跟伺服器的Timeout設定有聯系。
檢視tomcat的配置檔案 server.xml
檢查配置得出20000毫秒的時候acceptCount=”100” ,明顯不合理,最大連接配接數也太小了吧。
是以進一步優化:
優化完畢,繼續壓測...
系統響應能力節節攀升,之前LoadRunner報錯問題直到壓倒***并發也再也沒有出現。