TPS不穩(wěn)定退盯,隊列產生大量的TIME_WAIT彼乌?

問題現(xiàn)象

在高并發(fā)的壓力測試時候,有時候會TPS不穩(wěn)定或者上不去的現(xiàn)象渊迁,同時觀察到隊列產生大量的TIME_WAIT慰照。

基本的分析思路:

使用netstat -an|find "TCP",發(fā)現(xiàn)大量的TIME_WAIT狀態(tài)的隊列琉朽。以至于部分客戶端連接不上去毒租,導致TPS不穩(wěn)定或者上不去,成功率下降箱叁。

發(fā)現(xiàn)這種情況表示有較多的隊列在等待墅垮,原因是服務器端或者客戶端的連接數(shù)有限制。

可能的情況有:服務器系統(tǒng)端口數(shù)量不夠蝌蹂。

我們先來看一張圖:


圖:TCP正常連接建立和終止所對應的狀態(tài)

TCP連接的建立可以簡單的稱為三次握手噩斟,而連接的中止則可以叫做四次握手。

建立連接

在TCP/IP協(xié)議中孤个,TCP協(xié)議提供可靠的連接服務剃允,采用三次握手建立一個連接。

第一次握手:建立連接時,客戶端發(fā)送syn包(syn=j)到服務器斥废,并進入SYN_SEND狀態(tài)赴穗,等待服務器確認;

第二次握手:服務器收到syn包迎罗,必須確認客戶的SYN(ack=j+1)钻注,同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包统锤,此時服務器進入SYN_RECV狀態(tài)毛俏;

第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發(fā)送確認包ACK(ack=k+1)饲窿,此包發(fā)送完畢煌寇,客戶端和服務器進入ESTABLISHED狀態(tài),完成三次握手逾雄。

完成三次握手阀溶,客戶端與服務器開始傳送數(shù)據(jù),也就是ESTABLISHED狀態(tài)鸦泳。

結束連接

TCP有一個特別的概念叫做half-close银锻,這個概念是說,TCP的連接是全雙工(可以同時發(fā)送和接收)連接做鹰,因此在關閉連接的時候击纬,必須關閉傳和送兩個方向上的連接〖佤铮客戶機給服務器一個FIN為1 的TCP報文掉弛,然后服務器返回給客戶端一個確認ACK報文,并且發(fā)送一個FIN報文喂走,當客戶機回復ACK報文后(四次握手)殃饿,連接就結束了。

LISTEN: 表示監(jiān)聽狀態(tài)芋肠。服務端調用了listen函數(shù)乎芳,可以開始accept連接了

SYN_SENT:表示客戶端已經(jīng)發(fā)送了SYN報文。當客戶端調用connect函數(shù)發(fā)起連接時帖池,首先發(fā)SYN給服務端奈惑,然后自己進入SYN_SENT狀態(tài),并等待服務端發(fā)送ACK+SYN睡汹。

SYN_RCVD:表示服務端收到客戶端發(fā)送SYN報文肴甸。服務端收到這個報文后,進入SYN_RCVD狀態(tài)囚巴,然后發(fā)送ACK+SYN給客戶端原在。

ESTABLISHED:表示連接已經(jīng)建立成功了友扰。服務端發(fā)送完ACK+SYN后進入該狀態(tài),客戶端收到ACK后也進入該狀態(tài)庶柿。

FIN_WAIT_1:表示主動關閉連接村怪。無論哪方調用close函數(shù)發(fā)送FIN報文都會進入這個這個狀態(tài)。

CLOSE_WAIT:表示被動關閉方等待關閉浮庐。當收到對方調用close函數(shù)發(fā)送的FIN報文時甚负,回應對方ACK報文,此時進入CLOSE_WAIT狀態(tài)审残。

FIN_WAIT_2:表示被動關閉方同意關閉連接梭域。主動關閉連接方收到被動關閉方返回的ACK后,會進入該狀態(tài)搅轿。

LAST_ACK:表示被動關閉方發(fā)送FIN報文后碰辅,等待對方的ACK報文狀態(tài),當收到ACK后進入CLOSED狀態(tài)介时。

TIME_WAIT:表示收到對方的FIN報文并發(fā)送了ACK報文,就等2MSL后即可回到CLOSED狀態(tài)了凌彬。如果FIN_WAIT_1狀態(tài)下沸柔,收到對方同時帶FIN標志和ACK標志的報文時,可以直接進入TIME_WAIT狀態(tài)铲敛,而無須經(jīng)過FIN_WAIT_2狀態(tài)褐澎。

CLOSED:結束

TCP要保證在所有可能的情況下使得所有的數(shù)據(jù)都能夠被投遞。當你關閉一個socket時伐蒋,主動關閉一端的socket將進入TIME_WAIT狀態(tài)工三,而被動關閉一方則轉入CLOSED狀態(tài),這的確能夠保證所有的數(shù)據(jù)都被傳輸先鱼。當一個socket關閉的時候俭正,是通過兩端互發(fā)信息的四次握手過程完成的,當一端調用close()時焙畔,就說明本端沒有數(shù)據(jù)再要發(fā)送了掸读。這好似看來在握手完成以后,socket就都應該處于關閉CLOSED狀態(tài)了宏多。

但這有兩個問題:

首先儿惫,我們沒有任何機制保證最后的一個ACK能夠正常傳輸。

第二伸但,網(wǎng)絡上仍然有可能有殘余的數(shù)據(jù)包(wandering duplicates)肾请,我們也必須能夠正常處理。

我們再來看看TIME_WAIT:

TIME_WAIT是TCP連接斷開時必定會出現(xiàn)的狀態(tài)更胖。是沒有辦法避免掉的铛铁。

TCP連接是全雙工的隔显,因此每個方向必須單獨進行關閉”芄椋客戶端與服務器端建立TCP/IP連接后關閉socket荣月,服務端連接的端口狀態(tài)未TIME_WAIT.主動關閉的一方在發(fā)送最后一個ACK后,就會進入TIME_WAIT狀態(tài)梳毙。

總結主要的原因有兩點:

1哺窄、防止上一次連接中的包,迷路后重新出現(xiàn)账锹,影響新的連接

2萌业、可靠的關閉TCP連接: 在主動關閉方發(fā)送最后一個ACK(FIN),有可能會丟失,這個時候被動方會重新發(fā)送FIN奸柬,如果這時主動方處于closed狀態(tài)生年,就會響應RST而不是ACK。所以主動方要處于TIME_WAIT狀態(tài)廓奕,而不是CLOSED抱婉。

修改的方法:

增加服務器端口數(shù)量或者增加服務器的數(shù)量

縮短超時時間

具體修改方法:

運行:regedit

系統(tǒng)注冊表:\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下,新建2個DWORD值:

MaxUserPort設置為:65534桌粉,缺省為5000蒸绩;

TcpTimedWaitDelay設置為:30, 缺省為240铃肯。 ?----縮短該時間 ?(單位:s)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末患亿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子押逼,更是在濱河造成了極大的恐慌步藕,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挑格,死亡現(xiàn)場離奇詭異咙冗,居然都是意外死亡,警方通過查閱死者的電腦和手機漂彤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門乞娄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人显歧,你說我怎么就攤上這事仪或。” “怎么了士骤?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵范删,是天一觀的道長。 經(jīng)常有香客問我拷肌,道長到旦,這世上最難降的妖魔是什么旨巷? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮添忘,結果婚禮上采呐,老公的妹妹穿的比我還像新娘。我一直安慰自己搁骑,他們只是感情好斧吐,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仲器,像睡著了一般煤率。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乏冀,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天蝶糯,我揣著相機與錄音,去河邊找鬼辆沦。 笑死昼捍,一個胖子當著我的面吹牛,可吹牛的內容都是我干的肢扯。 我是一名探鬼主播妒茬,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鹃彻!你這毒婦竟也來了?” 一聲冷哼從身側響起妻献,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蛛株,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后育拨,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谨履,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年熬丧,在試婚紗的時候發(fā)現(xiàn)自己被綠了笋粟。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡析蝴,死狀恐怖害捕,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情闷畸,我是刑警寧澤尝盼,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站佑菩,受9級特大地震影響盾沫,放射性物質發(fā)生泄漏裁赠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一赴精、第九天 我趴在偏房一處隱蔽的房頂上張望佩捞。 院中可真熱鬧,春花似錦蕾哟、人聲如沸一忱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掀潮。三九已至,卻和暖如春琼富,著一層夾襖步出監(jiān)牢的瞬間仪吧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工鞠眉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留薯鼠,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓械蹋,卻偏偏與公主長得像出皇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子哗戈,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內容