性能测试机中存在大量的TIME_WAIT状态的连接,影响并发压力的发起

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能测试机中存在大量的TIME_WAIT状态的连接,影响并发压力的发起相关的知识,希望对你有一定的参考价值。

 

 

现在一个测试项目,发现性能测试机中有很多TIME_WAIT状态的TCP连接,在网上查了一下,这种状态也叫TCP半连接状态。

测试环境:3台winserver测试机,其中包括一台压力控制机,即controller机器

服务器环境:websphere+DB2

问题表现: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状态的连接依然大量存在,每台机器可以承担少量的并发不会出现错误;当并发增大时则会出现大量的错误。

以上是关于性能测试机中存在大量的TIME_WAIT状态的连接,影响并发压力的发起的主要内容,如果未能解决你的问题,请参考以下文章

Windows操作系统TIME_WAIT状态的TCP连接快速回收时间(性能测试时端口不够用)

Windows操作系统TIME_WAIT状态的TCP连接快速回收时间(性能测试时端口不够用)

TCP连接中time_wait在开发中的影响-搜人以鱼不如授之以渔

大量TIME_WAIT连接的解决办法

大量TIME_WAIT连接的解决办法

大量TIME_WAIT连接的解决办法