linux-networking – 杀死CLOSE_WAIT套接字而不杀死Linux上的父进程

Tomcat离开我的CLOSE_WAIT套接字最终使最大连接数饱和.

我在我的客户端和服务器代码中尝试了很多方法来摆脱这些无济于事,包括关闭连接,调用System.gc()等.

现在我正试图找到一种方法来简单地在操作系统中快速计算出来.我有conntrack工作,但我不知道如何使用它来杀死这些连接.我还将/ proc / sys / net / ipv4 / netfilter / ip_conntrack_tcp_timeout_close_wait设置为1,这当然太低但连接仍然存在.

有没有办法杀死这些僵尸插座?

运行Ubuntu.

解决方法

我相信连接服务器端的CLOSE_WAIT意味着服务器已从客户端收到FIN,将已将此确认回客户端,然后通知应用程序它可以关闭连接.

然后,一旦确认已从连接读取所有数据,则应用程序将放弃连接.

一旦放弃连接,服务器就会将最终的FIN发送回客户端,连接将完全关闭.

建议它与“TCP_tuning”无关

你确定你的应用程序正在关闭套接字吗?

当我写一个python服务器时,我学到了这个:D

UPDATE
根据您的Tomcat版本,由于Tomcat 6中引入的错误以及Coyote的AJP协议中的keepAliveTimeout功能,您可能会遇到此问题.
此问题的性质是由于Tomcat在keepAliveTimeout过期后未能关闭套接字引起的. Tomcat套接字将保持CLOSE_WAIT状态,但相应的mod_jk套接字将正常关闭.

他的错误已在SVN commit r589062中修复,并在Tomcat 6.0.15中发布

相关文章

查找全部容器的日志文件 $ sudo find /var/lib/docker/conta...
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型