Linux (openwrt) 出现太多 TIME_WAIT 状态的连接导致程序无法访问,怎么解决?

2021-03-06 13:54:51 +08:00
 AllenHua

楼主用的是 lean 的 openwrt 设备,cpu 是 n3150,之前发现机器中的 qbittorrent-nox 程序运行了一段时间之后 web 页面就无法访问了,使用 netstat 查看发现有很多的 TIME_WAIT 状态的连接。我试图按照一些教程中的建议做了修改,但是没有起作用。挂了将近 700 个种子,检查 cpu 和内存占用发现 cpu 和内存应该不是问题所在(没有性能瓶颈)。特来求助

⬆️️ TIME_WAIT 状态的连接数会逐渐增多

⬆️️ TIME_WAIT 连接数量已经从 51 增长到了 294

尝试添加以下参数

⬆️️ 但是提示 net.ipv4.tcp_tw_recycle is an unknown key 后面发现是目前正在使用的 Linux 内核版本超过了 4.12

root@softRouter:~# uname -a
Linux softRouter 4.19.108 #0 SMP Tue Mar 31 15:14:35 2020 x86_64 GNU/Linux

可以看出 Linux 内核版本 4.19.108 官方已经移除了 net.ipv4.tcp_tw_recycle ,可参考下面这篇文章

"被抛弃的 tcp_recycle" https://juejin.cn/post/6844903730874171405

网上能搜索到很多文章,比如下面这两篇

网上搜到的大多都是调整那几个参数,贴一段解释:

正常情况下,TCP 连接断开后,会以“TIME_WAIT”状态保留一定的时间,然后才会释放端口。当并发请求过多的时候,就会产生大量的这样的等待状态的连接,无法及时断开的话,会占用大量的端口资源和服务器资源。这个时候我们可以优化 TCP 的内核参数,来及时将该状态的端口清理掉。
出现“TIME_WAIT”意味着你的程序时常有主动关闭连接的行为,属于正常行为,可以设置地址可重用。
如果系统存在大量“TIME_WAIT”状态的连接,可以通过调整内核参数解决。

求不吝赐教

373 次点击
所在节点    OpenWrt
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/759033

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX