`

解决CLOSE_WAIT 问题

阅读更多

最近web服务器在大流量情况下经常出现假死现象,后台log报 too many open files 的错误,加大linux系统的文件打开数是可以解决部分问题,但是时间长了同样出问题,通过查询网络连接发现是tcp连接不关闭造成的。如下:
  netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
 
  LAST_ACK 1
  SYN_RECV 15
 
CLOSE_WAIT 7729
  ESTABLISHED 471
  FIN_WAIT1 3
  FIN_WAIT2 52
  SYN_SENT 1
  TIME_WAIT 725


  从结果可以看到有大量的连接处于CLOSE_WAIT状态。



要解决这个问题的可以修改系统的参数,系统默认超时时间的是7200秒,也就是2小时。

默认如下:

tcp_keepalive_time = 7200 seconds (2 hours)
tcp_keepalive_probes = 9
tcp_keepalive_intvl = 75 seconds


意思是如果某个TCP连接在idle 2个小时后,内核才发起probe.如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效


修改后


sysctl -w net.ipv4.tcp_keepalive_time=30
sysctl -w net.ipv4.tcp_keepalive_probes=2
sysctl -w net.ipv4.tcp_keepalive_intvl=2


经过这个修改后,服务器会在短时间里回收没有关闭的tcp连接。

 

 

 

参考:http://waringid.blog.51cto.com/65148/183496

         http://iceskysl.1sters.com/?action=show&id=234






 

分享到:
评论

相关推荐

    CLOSE_WAIT网络连接无法释放问题解决

    解决CLOSE_WAIT问题的关键在于确保服务器端正确关闭连接。在服务器端,需要在适当的时候调用close()方法,以释放连接资源。在这个例子中,服务器端没有正确关闭连接,导致了CLOSE_WAIT状态的出现。 使用netstat -na...

    TCP状态迁移,CLOSE_WAIT & FIN_WAIT2 的问题解决

    在 CLOSE_WAIT 和 FIN_WAIT_2 状态中,系统可能会出现崩溃的问题。这是因为如果对方在第三次握手的时候出问题,例如发 FIN 包的时候,丢了这个包,然而这边一直处在 FIN_WAIT_2 状态,TCP/IP 并没有设置这个状态的...

    close_wait_0306 close_wait_0306 close_wait_0306 close_wait_0306

    文件"close_wait_0306.chm"和"close_wait_0306"可能是关于这个问题的文档或日志文件,它们可能包含了更详细的错误信息、堆栈跟踪或连接状态的历史记录。CHM文件是Microsoft的帮助文件格式,通常包含软件的文档或技术...

    Close_Wait问题相关资料

    在TCP/IP协议栈中,"Close_Wait"是一种连接状态,表示一个方向的连接已经关闭,而另一个方向仍然保持开放,等待应用层关闭...在实际工作中,需要根据具体的应用场景和系统环境,灵活运用这些方法来解决Close_Wait问题。

    CLOSE_WAIT错误详解

    在TCP/IP协议栈中,CLOSE_WAIT是一个非常关键的连接状态...开发者应当重视这个问题,通过代码优化和系统配置调整来预防和解决CLOSE_WAIT错误。在遇到此类问题时,分析日志、排查代码、调整系统参数都是有效的解决手段。

    tcp连接出现close_wait状态?_tcp_close_

    TCP连接有多种状态,包括LISTEN、SYN_SENT、SYN_RECEIVED、ESTABLISHED、CLOSE_WAIT、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT等。每个状态都代表了连接的不同生命周期阶段。Close_Wait是服务器端接收到客户端的FIN( ...

    系统调优,你所不知道的TIME_WAIT和CLOSE_WAIT1

    但是,由于TCP连接是全双⼯的...CLOSE_WAIT则可能指示应用程序或系统的问题。解决这些问题需要深入理解TCP连接生命周期,优化代码、调整系统参数以及合理使用连接池。在进行这些操作时,应谨慎行事,以免引入新的问题。

    tomcat-timewait-closewait.zip

    标题 "tomcat-timewait-closewait.zip" 暗示了这个压缩包可能包含与Tomcat服务器在处理TCP连接时遇到的“Time_wait”和“Close_wait”状态相关的问题和解决方案。这两个术语是TCP/IP协议栈中的关键概念,尤其在高...

    [Socket]CLOSEWAIT.rar_Help!

    通常,它可能是网页的存档,可能包含了关于Socket编程中遇到CLOSE_WAIT状态时的错误排查步骤、代码示例或者解决策略。 在处理CLOSE_WAIT时,开发者需要注意以下几点: 1. **检查代码逻辑**:确保服务器端在收到...

    linux 下tcp参数优化

    例如,可以通过修改 tcp_keepalive_*系列参数来解决 CLOSE_WAIT 状态的问题。此外,还可以通过修改 inet_peer_gc_maxtime、inet_peer_gc_mintime 等参数来调整 INET peer storage 的大小和时间间隔。 Linux 下 TCP ...

    tcp连接状态详解 描述了tcp协议常用的命令

    TCP 连接状态详解 TCP 连接状态是指在 TCP 协议中,连接的不同阶段所对应的状态。...了解 TCP 连接状态是非常重要的,因为它可以帮助我们更好地理解 TCP 协议的工作机理,并更好地解决网络连接问题。

    librtmp长时间直播socket连接断开的原因

    6. **扩展时间戳问题**:在RTMP协议中,时间戳用于同步音视频数据。如果客户端和服务器之间的时间戳处理不一致,可能会导致数据同步错误,从而影响连接稳定性。 对于“扩展时间戳”,在RTMP协议中,标准时间戳为32...

    hadoop面试题

    ### Hadoop面试题之TCP/IP...通过掌握这些基础知识,不仅可以提高对底层通信机制的理解,还能够在遇到相关问题时迅速定位并解决问题。此外,对于准备Hadoop相关面试的人来说,熟悉这些技术细节也能显著提升面试表现。

    关于使用libcurl的注意事项 - blade2001的专栏 - 博客频道 - CSDN1

    1. 关闭连接重用(CLOSE_WAIT问题): 默认情况下,libcurl会保持连接打开,以便后续的传输可以复用这些连接。这可能导致大量TCP连接处于CLOSE_WAIT状态,如果这些连接没有被及时重用,就会占用系统资源,引发性能...

    springboot+netty实现mqtt协议的broken

    标题"springboot+netty实现mqtt协议的broken"可能意味着这个项目旨在解决Spring Boot与Netty集成时可能出现的问题,或者是一个关于如何处理MQTT连接中断的教程。在实际应用中,MQTT连接可能会因为各种原因断开,例如...

    linux socket 状态迁移 源码测试

    在Linux操作系统中,Socket是一种进程间通信机制,它允许运行在同一台机器上的进程或不同机器上的进程...在实际工作中,对Socket状态的掌握能帮助我们解决诸如连接异常、资源泄漏等问题,提高系统的稳定性和可靠性。

    TCP有限状态机

    ### TCP有限状态机详解 #### 一、引言 TCP(传输控制协议)是一种面向连接的、可靠...了解TCP状态机对于理解TCP协议的工作原理至关重要,尤其对于网络工程师而言,掌握这些基础知识对于解决实际网络问题非常有帮助。

    Java80端口占用异常解决方法

    本文将详细介绍如何在Windows操作系统中识别并解决80端口被占用的问题,特别是当这个问题影响到Java应用的正常运行时。 #### 识别端口占用 1. **使用`netstat -ano`命令:** - 在命令行中输入`netstat -ano`,...

Global site tag (gtag.js) - Google Analytics