`
DavisWang
  • 浏览: 51310 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

服务器上出现大量的TIME_WAIT连接的原因

阅读更多

        我们首先要弄清楚TIME_WAIT状态是什么?TIME_WAIT状态是主动关闭TCP连接的一方(即先发起FIN包的一方),在发送完最后一个ACK包后进入的状态。系统需要在TIME_WAIT状态下等待2MSL(maximum segment lifetime )后才能释放连接(端口)。根据RFC 793 MSL是2分钟,一般的TCP实现有30秒、1分钟和2分钟不等。进入TIME_WAIT状态等待2MSL主要有两个目的:一方面是主动关闭连接的一方在对方没有收到最后一个ACK包时(这时对方还会重发FIN,收到两个FIN的时间间隔一定小于2MSL)有时间可以重发ACK包,另一方面处于TIME_WAIT的连接(IP和端口组合)不能重用,这样可以保证被重新分配的socket不会受到之前残留的延迟重发报文影响。

        由于主动关闭TCP连接的一方才会进入TIME_WAIT状态,一般情况服务器端不会出现TIME_WAIT状态,因为大多数情况都是客户端主动发起连接并主动关闭连接。但是某些服务如pop/smtp、ftp却是服务端收到客户端的QUIT命令后主动关闭连接,这就造成这类服务器上容易出现大量的TIME_WAIT状态的连接,而且并发量越大处于此种状态的连接越多。另外,对于被动关闭连接的服务在主动关闭客户端非法请求或清理长时间不活动的连接时(这种情况很可能是客户端程序忘记关闭连接)也会出现TIME_WAIT的状态。

 

 

 

 

分享到:
评论
3 楼 DavisWang 2013-05-23  
就是说正常情况下服务端不会主动关闭连接,在客户端与服务端建立连接后客户端应主动关闭连接,但是由于开发人员的疏忽可能出现客户端在不再使用连接时不主动关闭连接的情况,这时服务端会定期关闭这些不活跃的连接,这时会出现TIME_WAIT的状态。
2 楼 kisshuy 2013-04-11  
“对于被动关闭连接的服务在主动关闭客户端非法请求或清理长时间不活动的连接时(这种情况很可能是客户端程序忘记关闭连接)也会出现TIME_WAIT的状态”对于这话不知道怎么去理解。还请您说下,跟着学习一下,呵呵
1 楼 jakingzou 2011-09-29  
总结的太好了,很到位!

相关推荐

    CentOS解决服务器存在大量time_wait的问题

    近期服务器出现大量time_wait的TCP连接造成服务器连接数过多而最终导致tomcat假死状态。连接服务器查看连接数的时候提示如下。 [root@test apache-tomcat-7.0.53]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a...

    服务器大量TIME_WAIT解决方法

    linux 服务器大量TIME_WAIT解决方法

    [线上问题] “服务端长连接与客户端短连接引起Nginx产生大量\"TIME_WAIT\"状态的线程”的问题分析解决

    NULL 博文链接:https://bert82503.iteye.com/blog/2147899

    windows 2008 R2解决socket连接不释放补丁包_time-wait过多注册表改.rar

    修改注册表中的tcpip的TIMEWAIT回收时间属性值,需要重启后生效 在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,添加名为TcpTimedWaitDelay的DWORD键,设置为十进制0,以缩短TIME_WAIT...

    测试解决TCP TIME-WAIT状态导致多链接失败问题.rar

    如果大量的 Time_wait 状态导致连接异常,有几种方法可以尝试解决问题。 减少 TIME_WAIT 超时时间:TIME_WAIT 状态是为了保证数据传输的完整性,因此在服务器端可以通过调整系统参数来减少 TIME_WAIT 超时时间。 ...

    TCP三次握手和四次挥手

    正常情况下一个服务器上不应该存在大量的`CLOST_WAIT`状态,如果大量存在大概率是代码的bug,关闭方法没有被执行到 2. `TIME_WAIT`:谁主动发起FIN,谁就进入该状态。起到的效果就是最后一次ACK提供重传的机会。表面...

    Linux高性能服务器编程

    3.2.3 使用tcpdump观察TCP头部信息 3.3 TCP连接的建立和关闭 3.3.1 使用tcpdump观察TCP连接的建立和关闭 3.3.2 半关闭状态 3.3.3 连接超时 3.4 TCP状态转移 3.4.1 TCP状态转移总图 3.4.2 TIME_WAIT状态 3.5...

    TCP/IP详解 卷3:TCP事务协议、HTTP、NNTP和UNIX域协议

    当客户与服务器进程在同一台主机上时,UNIX域协议通常要比TCP/IP快一倍。本书同样采用了大量的实例和实现细节,并参考引用了卷2中的大量源程序。适用于希望理解TCP/IP如何工作的人,包括编写网络应用程序的程序员...

    MySQL服务器性能优化.docx

    MySQL服务器性能优化全文共3页,当前为第1页。MySQL服务器性能优化全文共3页,当前为第1页。... (10)、wait_timeout: 服务器在关闭它之前在一个连接上等待行动的秒数。 默认数值是28800,我把它改为72

    mysql数据库my.cnf配置文件

    # 当把table_open_cache设置为很大时,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上 max_allowed_packet = 1000000000 # 接受的数据包大小;增加该变量的值十分安全,这是因为仅当需要时才...

    IOCP原理及关键问题集(史上最全的IOCP资料大全).rar

    优雅的链接关闭方法及shutdown、TIME_WAIT 及注册表设置:TcpNumConnections/MaxUserPort 多核多线程、生产消费者模型、读写者模型、多线程无锁环形队列及LockFreeList概念 Socket重用、端口重用 心跳、粘包、乱序 ...

    IOCP常见问题集(史上最全的IOCP资料大全)

    优雅的链接关闭方法及shutdown、TIME_WAIT 及注册表设置:TcpNumConnections/MaxUserPort 多核多线程、生产消费者模型、读写者模型、多线程无锁环形队列及LockFreeList概念 Socket重用、端口重用 心跳、粘包、乱序 ...

    TCPIP(整合高清PDF版和分章节PDF版)

    这个目标的实现省略了连接开始时TCP的三次握手,并缩短了连接结束时TIME_WAIT状态的持续时间。我们将会看到,在客户-服务器事务中,T/TCP的性能与UDP相当,而且T/TCP具有可靠性和适应性,这两点相对UDP来说都是很大...

    ORACLE9i_优化设计与系统调整

    §3.4.19 检查点间隔(LOG_CHECKPOINT_TIMEOUT) 76 §3.4.20 对大卸出文件大小(MAX_DUMP_FILE_SIZE) 76 §3.4.21 对大回滚段数(MAX_ROLLBACK_SEGMENTS) 77 §3.4.22 打开的光标数(OPEN_CURSORS) 77 §3.4.23 优化方式...

    内存管理内存管理内存管理

    free:该函数获得指向由 malloc 分配的内存片段的指针,并将其释放,以便以后的程序或操作系统使用(实际上,一些 malloc 实现只能将内存归还给程序,而无法将内存归还给操作系统)。 物理内存和虚拟内存 要...

    Python核心编程第二版(ok)

     1.5.1 命令行上的交互式解释器   1.5.2 从命令行启动脚本   1.5.3 集成开发环境   1.5.4 其他的集成开发环境和执行环境   1.6 Python文档   1.7 比较Python(Python与其他语言的比较)   1.8 ...

    操作系统(内存管理)

    我们主要使用连接的指针遍历内存来寻找开放的内存块。这里是代码: 清单 6. 主分配程序 void *malloc(long numbytes) { /* Holds where we are looking in memory */ void *current_location; /* This is ...

    2009达内SQL学习笔记

    如果已有锁则自动退出:Select id,salary From s_emp where id=1 For Update NoWait; FOR UPDATE :可以再加 OF 精确到某格。如: ... For Update OF salary ... 注意要解锁。 五、ORDER BY 子句,排序 Order ...

    精通windows server 2008 命令行与powershell 电子书PDF单文件完整版

    7.5.4 connect news——设置OE新闻服务器TCP/IP连接 329 7.5.5 dump——创建脚本 329 7.5.6 gui——启动诊断工具 329 7.5.7 ping adapter——验证与其他设备的连接 330 7.5.8 ping dhcp——验证与DHCP服务器的连接 ...

    精通windows server 2008 命令行与powershell电子书PDF版(第一卷)

    7.5.4 connect news——设置OE新闻服务器TCP/IP连接 329 7.5.5 dump——创建脚本 329 7.5.6 gui——启动诊断工具 329 7.5.7 ping adapter——验证与其他设备的连接 330 7.5.8 ping dhcp——验证与DHCP服务器的连接 ...

Global site tag (gtag.js) - Google Analytics