以最简单的方法,做最复杂的测试

发布新日志

  • 服务器的TIME_WAIT连接

    2009-03-24 17:34:36

    平时做压力测试的时候,经常会发现在服务器端产生大量的TIME_WAIT状态的TCP连接,到底这玩意儿会不会对性能产生影响呢?解答这个问题之前,看来需要先分析一下TIME_WAIT产生的具体原因。

    TIME_WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认。这个好像是官方说法了,不是太理解,那好再详细一点。

    从以上的图可以看出,TIME_WAIT只出现在主动关闭的那个阶段,也就是说只有主动关闭方才会出现这个状态,OK,这样解决了一个大问题咯。那针对我们的case,就是因为服务器端主动关闭连接咯。不过这样又会有两种可能性:1.服务器主动关闭,客户端被动关闭; 2. 服务器、客户端都主动关闭

    第一种:

    第二种:

    这样看来只要服务器主动关闭连接,TIME_WAIT就不可避免,因此应该可以忽略其对性能的影响了,因为如果应用逻辑如此,其无可避免。并且通过在下的测试,TIME_WAIT的连接在等待2MSL后,会由系统释放关闭,此时会占用一些CPU的资源,但占用率几乎可以忽略。

    看一下造成服务器端主动关闭的一些方法,主要是针对HTTP的访问:
    • HTTP服务关闭KeepAlive
    • 客户端Header中的Connection定义为Close


Open Toolbar