天天看點

Web壓力測試

webbench

ab

siege

檢視連接配接數量

tcp連接配接解析

<code>webbench -c 并發數 -t 運作測試時間 URL</code>

web伺服器端 檢視連接配接數量

Web壓力測試

第一次握手

用戶端向服務端發送連接配接請求封包段。該封包段的頭部中SYN=1,ACK=0,seq=x。請求發送後,用戶端便進入SYN-SENT狀态。

TCP規定:SYN=1的封包段不能有資料部分,但要消耗掉一個序号。

第二次握手

服務端收到連接配接請求封包段後,如果同意連接配接,則會發送一個應答:SYN=1,ACK=1,seq=y,ack=x+1。

該應答發送完成後便進入SYN-RCVD狀态。

第三次握手

當用戶端收到連接配接同意的應答後,還要向服務端發送一個确認封包段,表示:服務端發來的連接配接同意應答已經成功收到。

<code>該封包段的頭部為:ACK=1,seq=x+1,ack=y+1。</code>

用戶端發完這個封包段後便進入ESTABLISHED狀态,服務端收到這個應答後也進入ESTABLISHED狀态,此時連接配接的建立完成!

Web壓力測試

TCP連接配接是雙向的,是以在四次揮手中,前兩次揮手用于斷開一個方向的連接配接,後兩次揮手用于斷開另一方向的連接配接。

第一次揮手

若A認為資料發送完成,則它需要向B發送連接配接釋放請求。該請求隻有封包頭,頭中攜帶的主要參數為:

FIN=1,seq=u。此時,A将進入FIN-WAIT-1狀态。

第二次揮手

B收到連接配接釋放請求後,會通知相應的應用程式,告訴它A向B這個方向的連接配接已經釋放。此時B進入CLOSE-WAIT狀态,并向A發送連接配接釋放的應答,其封包頭包含:

ACK=1,seq=v,ack=u+1。

A收到該應答,進入FIN-WAIT-2狀态,等待B發送連接配接釋放請求。

第二次揮手完成後,A到B方向的連接配接已經釋放,B不會再接收資料,A也不會再發送資料。但B到A方向的連接配接仍然存在,B可以繼續向A發送資料。

第三次揮手

當B向A發完所有資料後,向A發送連接配接釋放請求,請求頭:FIN=1,ACK=1,seq=w,ack=u+1。B便進入LAST-ACK狀态。

第四次揮手

A收到釋放請求後,向B發送确認應答,此時A進入TIME-WAIT狀态。該狀态會持續2MSL時間,若該時間段内沒有B的重發請求的話,就進入CLOSED狀态,撤銷TCB。當B收到确認應答後,也便進入CLOSED狀态,撤銷TCB。

為什麼A要先進入TIME-WAIT狀态,等待2MSL時間後才進入CLOSED狀态?

為了保證B能收到A的确認應答。

若A發完确認應答後直接進入CLOSED狀态,那麼如果該應答丢失,B等待逾時後就會重新發送連接配接釋放請求,但此時A已經關閉了,不會作出任何響應,是以B永遠無法正常關閉。

本文轉自 295631788 51CTO部落格,原文連結:http://blog.51cto.com/hequan/2066839,如需轉載請自行聯系原作者

繼續閱讀