JMeter基礎(chǔ)11 -- Keep-Alive在性能壓測(cè)中的影響

1锐涯、首先你要明白KeepAlive到底是什么東西磕诊?其次你要了解KeepAlive在壓測(cè)過程中會(huì)造成哪些影響?

我們要對(duì)keepalive有個(gè)簡(jiǎn)易的理解:TCP的keep alive是檢查當(dāng)前TCP連接是否活著纹腌;HTTP的Keep-alive是要讓一個(gè)TCP連接活久點(diǎn)霎终;在一個(gè)TCP連接內(nèi),多個(gè)HTTP請(qǐng)求可以并行升薯,下一個(gè)HTTP請(qǐng)求在上一個(gè)HTTP請(qǐng)求的應(yīng)答完成之前就發(fā)起莱褒。它們是不同層次的概念,所以叫http長(zhǎng)連接似乎是不太合理的涎劈,應(yīng)該叫多個(gè)http請(qǐng)求時(shí)的tcp長(zhǎng)連接復(fù)用广凸。

那我們可能會(huì)想,當(dāng)我們?cè)谑褂胘meter并發(fā)測(cè)試的時(shí)候蛛枚,如果勾選了keep-alive谅海,是不是走的都是重復(fù)的連接,即并發(fā)數(shù)和客戶端的端口數(shù)應(yīng)該是一樣的蹦浦。但并不是這個(gè)樣子扭吁。

jmeter在發(fā)送http請(qǐng)求時(shí),默認(rèn)帶有keep-alive,但我們通過查看jmeter配置文件發(fā)現(xiàn)并沒有相關(guān)有效的連接時(shí)長(zhǎng)配置侥袜,可以認(rèn)定:jmeter中的請(qǐng)求都是無等待請(qǐng)求蝌诡,response time約等于零,一旦連接數(shù)據(jù)接收完畢枫吧,或者接口處于空閑狀態(tài)浦旱,連接便會(huì)斷開

所以在不修改jmeter默認(rèn)配置情況下,每個(gè)線程都是獨(dú)立的九杂、全新的采转,無論是否勾選keep-alive猜极,請(qǐng)求都不受影響(服務(wù)端強(qiáng)制要求短連接除外)

在詳細(xì)了解TCP連接的狀態(tài)和關(guān)閉方式后,我們會(huì)發(fā)現(xiàn)TIME_WAIT狀態(tài)是一個(gè)坑爹的存在!主動(dòng)關(guān)閉連接的一方在發(fā)送最后一個(gè)ACK包后侍芝,無論對(duì)方是否收到都會(huì)進(jìn)入TIME_WAIT狀態(tài)荠医,等待2MSL的時(shí)間颜价,然后才能釋放網(wǎng)絡(luò)資源斯碌。MSL就是Maximum Segment Lifetime(數(shù)據(jù)包的最大生命周期),是一個(gè)數(shù)據(jù)包能在互聯(lián)網(wǎng)上生存的最長(zhǎng)時(shí)間鹿响,若超過這個(gè)時(shí)間則該數(shù)據(jù)包將會(huì)消失在網(wǎng)絡(luò)中羡微。操作系統(tǒng)通常會(huì)將2MSL設(shè)為4分鐘,最低不少于30秒惶我,因而TIME_WAIT狀態(tài)一般維持在30秒至4分鐘妈倔;
對(duì)于Client而言,每個(gè)連接都需要占用一個(gè)端口绸贡,而系統(tǒng)允許的可用端口數(shù)不足65000個(gè)(這也是在TCP參數(shù)優(yōu)化后才能達(dá)到)盯蝴。因此,如果Client發(fā)起過多的連接且連接未關(guān)閉听怕,就會(huì)有大量的連接處于TIME_WAIT狀態(tài)捧挺,等待2MSL的時(shí)間后才能釋放端口,于是Client會(huì)由于缺少可用端口而無法新建連接尿瞭。
[time_wait端口查詢 netstat -aon|findstr "TIME_WAIT"]

1.增加系統(tǒng)端口

我們可以通過修改注冊(cè)表配置來解決問題:
1,啟動(dòng)注冊(cè)表編輯器(Regedt32.exe )闽烙。
2,在注冊(cè)表中確定下述鍵值的位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
在“編輯”菜單上點(diǎn)擊“添加值”,然后增加下述注冊(cè)值:
Value Name: MaxUserPort
Data Type: REG_DWORD
Value: 65534
它用于設(shè)置為任何用戶提供的臨時(shí)端口數(shù)声搁。有效范圍介于5000 和65534 之間(十進(jìn)制)黑竞。默認(rèn)值為0x1388 (5000 ,十進(jìn)制)疏旨。
3,在“編輯”菜單上點(diǎn)擊“添加值”很魂,然后增加下述注冊(cè)值:
Value Name: TcpTimedWaitDelay
Data Type: REG_DWORD
Value: 30
它用于設(shè)置關(guān)閉之前將TCP 端口連接保持在TIME_WAIT 狀態(tài)的秒數(shù)。 有效范圍介于0 秒和300 秒之間檐涝。默認(rèn)值為0x78 (120 秒)莫换。
4,退出注冊(cè)表編輯器霞玄。
5,重啟服務(wù)器骤铃。

2.windows修改句柄文件

Windows 下單機(jī)的TCP連接數(shù)有多個(gè)參數(shù)共同決定

最大TCP連接數(shù)

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
TcpNumConnections = 0x00fffffe (Default = 16,777,214)

以上注冊(cè)表信息配置單機(jī)的最大允許的TCP連接數(shù)拉岁,默認(rèn)為 16M。這個(gè)數(shù)值看似很大惰爬,這個(gè)并不是限制最大連接數(shù)的唯一條件喊暖,還有其他條件會(huì)限制到TCP 連接的最大連接數(shù)。

最大動(dòng)態(tài)端口數(shù)

TCP客戶端和服務(wù)器連接時(shí)撕瞧,客戶端必須分配一個(gè)動(dòng)態(tài)端口陵叽,默認(rèn)情況下這個(gè)動(dòng)態(tài)端口的分配范圍為 1024-5000 ,也就是說默認(rèn)情況下丛版,客戶端最多可以同時(shí)發(fā)起3977 個(gè)Socket 連接巩掺。我們可以修改如下注冊(cè)表來調(diào)整這個(gè)動(dòng)態(tài)端口的范圍

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxUserPort = 5000 (Default = 5000, Max = 65534)

最大TCB 數(shù)量

系統(tǒng)為每個(gè)TCP 連接分配一個(gè)TCP 控制塊(TCP control block or TCB),這個(gè)控制塊用于緩存TCP連接的一些參數(shù)页畦,每個(gè)TCB需要分配 0.5 KB的pagepool 和 0.5KB 的Non-pagepool胖替,也就說,每個(gè)TCP連接會(huì)占用 1KB 的系統(tǒng)內(nèi)存豫缨。

系統(tǒng)的最大TCB數(shù)量由如下注冊(cè)表設(shè)置決定

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxFreeTcbs = 2000 (Default = RAM dependent, but usual Pro = 1000, Srv=2000)

MaxFreeTcbs 的默認(rèn)值為1000 (64M 以上物理內(nèi)存)

最大TCB Hash table 數(shù)量
TCB 是通過Hash table 來管理的独令,下面注冊(cè)表設(shè)置決定了這個(gè)Hash table 的大小

HKEY_LOCAL_MACHINE \System \CurrentControlSet \services \Tcpip \Parameters]
MaxHashTableSize = 512 (Default = 512, Range = 64-65536)

這個(gè)值指明分配 pagepool 內(nèi)存的數(shù)量,也就是說好芭,如果MaxFreeTcbs = 1000 , 則 pagepool 的內(nèi)存數(shù)量為 500KB

那么 MaxHashTableSize 應(yīng)大于 500 才行燃箭。這個(gè)數(shù)量越大,則Hash table 的冗余度就越高舍败,每次分配和查找 TCP 連接用時(shí)就越少招狸。這個(gè)值必須是2的冪,且最大為65536.

IBM WebSphere Voice Server 在windows server 2003 下的典型配置

這是IBM WebSphere Voice Server 的典型配置邻薯,大家可以做個(gè)參考裙戏。原文參見
[IBM WebSphere Voice Server 在windows server 2003 下的典型配置]

MaxUserPort = 65534 (Decimal)
MaxHashTableSize = 65536 (Decimal)
MaxFreeTcbs = 16000 (Decimal)
這里我們可以看到 MaxHashTableSize 被配置為比MaxFreeTcbs 大4倍,這樣可以大大增加TCP建立的速度弛说。

3.單網(wǎng)卡捆綁多ip

一次偶然機(jī)會(huì)挽懦,從朋友那里聽到什么東東能支持單臺(tái)機(jī)器“上百萬并發(fā)量”,于是考慮如何解決tcp客戶端端口不夠的問題木人。
因?yàn)槟J(rèn)65535端口信柿,經(jīng)過設(shè)置,最多端口數(shù)不到60000醒第,如何能達(dá)到百萬呢渔嚷?
看了下UNP,里面講SO_REUSEADDR應(yīng)用的4種場(chǎng)景時(shí)有說到:
SO_REUSEADDR允許單個(gè)進(jìn)程捆綁同一端口到多個(gè)套接字上稠曼,只要每次捆綁指定不同的貝蒂IP地址即可形病。
于是猜測(cè):當(dāng)某個(gè)IP的端口用盡時(shí)可以選擇另一個(gè)IP進(jìn)行發(fā)送消息。
那么如何在一個(gè)機(jī)器上虛擬出多個(gè)ip地址呢?
可以使用工具ipop


ipop

工具下載地址:鏈接:https://pan.baidu.com/s/12lqGqyFsvxJ1NEVsS4eW5g 提取碼:6666

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末漠吻,一起剝皮案震驚了整個(gè)濱河市量瓜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌途乃,老刑警劉巖绍傲,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異耍共,居然都是意外死亡烫饼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門试读,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杠纵,“玉大人,你說我怎么就攤上這事钩骇”仍澹” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵伊履,是天一觀的道長(zhǎng)韩容。 經(jīng)常有香客問我,道長(zhǎng)唐瀑,這世上最難降的妖魔是什么群凶? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮哄辣,結(jié)果婚禮上请梢,老公的妹妹穿的比我還像新娘。我一直安慰自己力穗,他們只是感情好毅弧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著当窗,像睡著了一般够坐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上崖面,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天元咙,我揣著相機(jī)與錄音,去河邊找鬼巫员。 笑死庶香,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的简识。 我是一名探鬼主播赶掖,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼感猛,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了奢赂?” 一聲冷哼從身側(cè)響起陪白,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呈驶,沒想到半個(gè)月后拷泽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袖瞻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拆吆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聋迎。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖枣耀,靈堂內(nèi)的尸體忽然破棺而出霉晕,到底是詐尸還是另有隱情,我是刑警寧澤捞奕,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布牺堰,位于F島的核電站,受9級(jí)特大地震影響颅围,放射性物質(zhì)發(fā)生泄漏伟葫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一院促、第九天 我趴在偏房一處隱蔽的房頂上張望筏养。 院中可真熱鬧,春花似錦常拓、人聲如沸渐溶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茎辐。三九已至,卻和暖如春掂恕,著一層夾襖步出監(jiān)牢的瞬間拖陆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工竹海, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留慕蔚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓斋配,卻偏偏與公主長(zhǎng)得像孔飒,于是被迫代替她去往敵國和親灌闺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容