查看Apache併發請求數及其TCP連接狀態

內容摘要:這兩天搭建了一組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:等待所有分組死掉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章