netstat命令狀態說明:
CLOSED | 沒有使用這個套接字[netstat 無法顯示closed狀態] |
LISTEN | 套接字正在監聽連線[呼叫listen後] |
SYN_SENT | 套接字正在試圖主動建立連線[傳送SYN後還沒有收到ACK] |
SYN_RECEIVED | 正在處於連線的初始同步狀態[收到對方的SYN,但還沒收到自己發過去的SYN的ACK] |
ESTABLISHED | 連線已建立 |
CLOSE_WAIT | 遠端套接字已經關閉:正在等待關閉這個套接字[被動關閉的一方收到FIN] |
FIN_WAIT_1 | 套接字已關閉,正在關閉連線[傳送FIN,沒有收到ACK也沒有收到FIN] |
CLOSING | 套接字已關閉,遠端套接字正在關閉,暫時掛起關閉確認[在FIN_WAIT_1狀態下收到被動方的FIN] |
LAST_ACK | 遠端套接字已關閉,正在等待本地套接字的關閉確認[被動方在CLOSE_WAIT狀態下傳送FIN] |
FIN_WAIT_2 | 套接字已關閉,正在等待遠端套接字關閉[在FIN_WAIT_1狀態下收到發過去FIN對應的ACK] |
TIME_WAIT | 這個套接字已經關閉,正在等待遠端套接字的關閉傳送[FIN、ACK、FIN、ACK都完畢,這是主動方的最後一個狀態,在過了2MSL時間後變為CLOSED狀態] |
提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到
通過netstat命令檢視資料庫、網站等連線情況(併發數等)
統計出所有TCP連線以及各個狀態的連線數
netstat -n | awk `/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}`
結果示例:
SYN_RECV 1
ESTABLISHED 45
TIME_WAIT 125
單獨檢視web站點當前併發數:
netstat -tanl|grep “ESTABLISHED”|grep “:80″|wc -l
單獨檢視mysql當前連線數:
netstat -tanl|grep “ESTABLISHED”|grep “:3306″|wc -l