1. 程式人生 > 實用技巧 >檢視Apache併發請求數及其TCP連線狀態[張宴]

檢視Apache併發請求數及其TCP連線狀態[張宴]

 [文章作者:張宴 本文版本:v1.1 最後修改:2007.07.27 轉載請註明出處:http://blog.s135.com]

這兩天搭建了一組Apache伺服器,每臺伺服器4G記憶體,採用的是prefork模式,一開始設定的連線數太少了,需要較長的時間去響應使用者的請求,後來修改了一下Apache 2.0.59的配置檔案httpd.conf:

引用 # prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 2000
MaxRequestsPerChild 10000



檢視httpd程序數(即prefork模式下Apache能夠處理的併發請求數):
Linux命令:
引用 ps -ef | grep httpd | wc -l
返回結果示例:
1388
表示Apache能夠處理1388個併發請求,這個值Apache可根據負載情況自動調整,我這組伺服器中每臺的峰值曾達到過2002。


檢視Apache的併發請求數及其TCP連線狀態:
Linux命令:
引用 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
(這條語句是從新浪互動社群事業部技術總監王老大那兒獲得的,非常不錯)
返回結果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待處理的請求數;ESTABLISHED表示正常資料傳輸狀態;TIME_WAIT表示處理完畢,等待超時結束的請求數。


關於TCP狀態的變遷,可以從下圖形象地看出:

  
狀態:描述
CLOSED:無連線是活動的或正在進行
LISTEN:伺服器在等待進入呼叫
SYN_RECV:一個連線請求已經到達,等待確認
SYN_SENT:應用已經開始,開啟一個連線
ESTABLISHED:正常資料傳輸狀態
FIN_WAIT1:應用說它已經完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉

轉載於:https://blog.51cto.com/5iwww/287954