統計連接配接數,使用netstat指令或ss指令都可以
1)統計連接配接數(80端口)
[root@wang ~]# netstat -nat|grep -i "80"|wc -l
872
或者:netstat -ant | grep $ip:80 | wc -l
[root@wang ~]# netstat -ant | grep 111.142.132.192:80 | wc -l
2)檢視目前并發通路數(統計已連接配接上的),狀态為“ESTABLISHED”
[root@wang ~]# netstat -na|grep ESTABLISHED|wc -l
405
或者:
[root@wang ~]# netstat -ant | grep 111.142.132.192:80 | grep EST | wc -l
3)檢視IP通路次數
[root@wang ~]# netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
檢視ip連接配接數(成功連接配接上的)
[root@wang ~]# netstat -nat |grep ESTABLISHED | awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
4)檢視并發請求數(伺服器連接配接數)及其TCP連接配接狀态:
[root@wang ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
FIN_WAIT2 34
CLOSING 1
SYN_RECV 73
CLOSE_WAIT 9
TIME_WAIT 139
ESTABLISHED 302
LAST_ACK 7
FIN_WAIT1 11
結果解釋:
SYN_RECV 表示正在等待處理的請求數;
ESTABLISHED 表示正常資料傳輸狀态;
TIME_WAIT 表示處理完畢,等待逾時結束的請求數;
FIN_WAIT1 表示server端主動要求關閉tcp連接配接;
FIN_WAIT2 表示用戶端中斷連接配接;
LAST_ACK 表示關閉一個TCP連接配接需要從兩個方向上分别進行關閉,雙方都是通過發送FIN來表示單方向資料的關閉,當通信雙方發送了最後一個FIN的時候,發送方此時處于LAST_ACK狀态,當發送方收到對方的确認(Fin的Ack确認)後才真正關閉整個TCP連接配接;
CLOSING 表示兩邊同時嘗試關閉
或者執行下面的指令:會出現一個界面,實時統計并發連接配接數和TCP連接配接數
[root@wang ~]# watch "netstat -n | awk '/^tcp/ {++S[\$NF]} END {for(a in S) print a, S[a]}'"
5)查找較多time_wait連接配接,降序排列
[root@wang ~]# netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
------------------------------------------------------------------------------------------------
上面是使用netstat指令進行統計檢視的,也可以使用ss指令檢視。
[root@wang ~]# ss -a|wc -l
746
[root@wang ~]# ss -a|grep ESTAB|wc -l
358
[root@wang ~]# ss -a|grep TIME-WAIT|wc -l
146
-----------------------------------------------------------------------------------------------
如發現系統存在大量TIME_WAIT狀态的連接配接,該怎麼辦?
根據TCP協定定義的3次握手斷開連接配接規定,發起socket主動關閉的一方socket将進入TIME_WAIT狀态,TIME_WAIT狀态下的socket不能被回收使用。具展現象是對于一個處理大量短連接配接的伺服器,如果是由伺服器主動關閉用戶端的連接配接,将導緻伺服器端存在大量的處于TIME_WAIT狀态的socket, 甚至比處于Established狀态下的socket多的多,嚴重影響伺服器的處理能力,甚至耗盡可用的socket,停止服務. TIME_WAIT是TCP協定用以保證被重新配置設定的socket不會受到之前殘留的延遲重發封包影響的機制,是必要的邏輯保證.
通過調整核心參數解決,編輯/etc/sysctl.conf檔案,添加下面四行内容:
[root@wang ~]# 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 = 30
配置說明:
net.ipv4.tcp_syncookies = 1 表示開啟SYN cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊,預設為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許将TIME-WAIT sockets重新用于新的TCP連接配接,預設為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連接配接中TIME-WAIT sockets的快速回收,預設為0,表示關閉。
net.ipv4.tcp_fin_timeout 修改系統預設的TIMEOUT時間
讓添加的參數生效
[root@wang ~]# /sbin/sysctl -p
***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************
本文轉自散盡浮華部落格園部落格,原文連結:http://www.cnblogs.com/kevingrace/p/6211542.html,如需轉載請自行聯系原作者