A. 如何查看linux並發連接數
1、查看Web伺服器(Nginx Apache)的並發請求數及其TCP連接狀態:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}
netstat -n|grep ^tcp|awk '{print $NF}'|sort -nr|uniq -c
或者:
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}
返回結果一般如下:
LAST_ACK 5 (正在等待處理的請求數)
SYN_RECV 30
ESTABLISHED 1597 (正常數據傳輸狀態)
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057 (處理完畢,等待超時結束的請求數)
其他參數說明:
CLOSED:無連接是活動的或正在進行
LISTEN:伺服器在等待進入呼叫
SYN_RECV:一個連接請求已經到達,等待確認
SYN_SENT:應用已經開始,打開一個連接
ESTABLISHED:正常數據傳輸狀態
FIN_WAIT1:應用說它已經完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
2、查看Nginx運行進程數
ps -ef | grep nginx | wc -l
返回的數字就是nginx的運行進程數,如果是apache則執行
ps -ef | grep httpd | wc -l
3、查看Web伺服器進程連接數:
netstat -antp | grep 80 | grep ESTABLISHED -c
B. 如何測試伺服器支持的最大並發連接數
更改服務端的I/O模型吧,這明顯是服務端設計的問題。
你這樣設計上線使用的話,伺服器開銷太大了(主要是線程切換的開銷)。
//--------------------
Listen(socket,5),跟這個有一定關系。
int listen(int sockfd, int backlog); 第二個參數是你監聽客戶端的最大個數,如連接到主機上的客戶端超過其數listen則會返回一個錯誤代號。
backlog你可以設置大一點,如100之類的。
建議使用I/O模型吧,不要使用建立新線程來處理。
(你使用建立新線程的話,會發現每個進程所建立的最大線程數量是有一個限制的)
C. Windows伺服器怎麼查看iis並發連接數
如果要查看IIS連接數,最簡單方便的方法是通過「網站統計」來查看,「網站統計」的當前在線人數可以認為是當前IIS連接數。然而,「網站統計」的當前在線人數統計時間較長,一般為10分鍾或15分鍾,再加上統計技術及統計機制的問題,從而會產生或多或少的統計誤差。
如果要想知道確切的當前網站IIS連接數的話,最有效的方法是通過windows自帶的系統監視器來查看。這正是本文要介紹的方法。
一、運行-->輸入「perfmon.msc」
二、在「系統監視器」圖表區域里點擊右鍵,然後點「添加計數器」
四、設置完畢
這樣,你就可以在「系統監視器」圖表區域中看到一條曲線(此曲線你可以設置其顏色和寬度等參數),它就是網站的IIS連接數曲線圖了,如圖一黃色曲線所示。
需要說明的是,windows系統監視器顯示的是即時IIS並發連接數,並非如「網站統計」那裡的15分鍾內訪問人數,所以你會發現IIS並發連接數並不會太多。