Luk*_*uke 8 networking centos netstat connections
我有一个(可能很旧)CentOS 4.5 服务器,里面有一个自定义的 Java 应用程序。
我发现该应用程序在运行一段时间后崩溃,并发现它正在处理 1024 个连接并在它死机时尝试再打开一个套接字。
事实上,如果我检查ulimit -n
我可以确认它是 1024,所以应用程序正在关闭,因为它没有更多可用的文件描述符。
令我困扰的是,有数百个明显不活动的连接,处于“已建立关闭”状态,全部来自相对较少的 IP(大约 200 个),并且随着时间的推移和客户端连接,它们往往会加起来,很多就像我看到的这些netstat -nato
:
tcp 0 0 ::ffff:10.39.151.20:10000 ::ffff:78.152.97.98:12059 ESTABLISHED off (0.00/0/0)
tcp 0 0 ::ffff:10.39.151.20:10000 ::ffff:78.152.97.98:49179 ESTABLISHED off (0.00/0/0)
tcp 0 0 ::ffff:10.39.151.20:10000 ::ffff:78.152.97.42:45907 ESTABLISHED off (0.00/0/0)
Run Code Online (Sandbox Code Playgroud)
我知道这不是 DOS 攻击,连接是合法的,但是在客户端连接并与服务器进行短数据交换后似乎没有关闭......而且速度很慢,因为它们是由 200 个客户端生成的(计数不同的IP)..
我应该调查一些奇怪的应用程序错误(可能在 jre 1.6 上),还是深入研究 CentOS 网络配置?我不知道还有什么可看的..
提前致谢,任何提示表示赞赏!
Zab*_*man 10
假设 1:您的应用程序位于防火墙之后,该防火墙会在给定的时间后丢弃空闲的 tcp 连接。
当客户端再次尝试使用此连接时,它发现它没有响应,将其丢弃并开始一个新的连接。
对于服务器,由于 TCP 连接没有保持活动计时器,因此无法知道连接无效并且将无限期地保持打开状态。
证明:对一个连接进行长时间运行的 tcpdump 以显示它在给定的时间后变为未使用状态。
解决方案:
归档时间: |
|
查看次数: |
27933 次 |
最近记录: |