性能測試機中存在大量的TIME_WAIT狀態的連接,影響並發壓力的發起


現在一個測試項目,發現性能測試機中有很多TIME_WAIT狀態的TCP連接,在網上查了一下,這種狀態也叫TCP半連接狀態。

測試環境:9台windows測試機,其中包括一台壓力控制機,即controller機器

服務器環境:IIS7.0+MS SQL

問題表現:controller機器使用其中任何一台windows測試機並發5個vuser或者更多,都會在8分鍾或者10分鍾左右出現大量的失敗交易

分析:通過在cmd中查看netstat -ano > d:/port.txt(把netstat打印的信息輸出到當前D盤根目錄下)查看TCP連接,有大量的TIME_WAIT狀態的TCP連接,大約有6W多個time_wait狀態的TCP連接,咱們windows系統最大端口數量才只有65536個端口,性能測試機每次通過TCP訪問server都會占用一個本地端口,導致time_wait狀態(半連接狀態)過多,並且不釋放,導致新的TCP連接去尋找新的端口。如果widows提供的65536個端口全部用完,time_wait狀態大量存在,就不會再有新建立的連接,則會出現timeout,導致大量的並發用戶數宕掉。這嚴重影響了並發的發起,該問題已經提交到運維部,請他們來協助

解決辦法:

1、修改注冊表中的tcpip的屬性值:TIMEWAIT回收時間

在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,添加名為TcpTimedWaitDelay的DWORD鍵,設置為十進制0,以縮短TIME_WAIT的等待時間。

測試結果:TIME_WAIT狀態的連接依然大量存在,每台機器可以承擔少量的並發不會出現錯誤;當並發增大時則會出現大量的錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM