Linux 服务器, 压测, tcp 长连接 并发到 26 万, 网卡就像挂掉了, 大家帮忙给点思路

2020-01-07 16:49:25 +08:00
 DinoStray

linux 服务器, 压测, tcp 长连接 并发到 26 万.
内存 CPU 都正常
已经建好的 tcp 连接都正常
就是无法新建 tcp 连接了

现象包括连 百度 都无法 ping 了

ping www.baidu.com

ping: www.baidu.com: Temporary failure in name resolution

新启动一个服务, 数据也无法发送了
基本等同完全无法访问网络了, apt update 之类的命令也全部报错失效

2480 次点击
所在节点    问与答
7 条回复
DinoStray
2020-01-07 16:50:33 +08:00
把压测的模拟器都关掉, 一切恢复正常
Comphuse
2020-01-07 19:03:00 +08:00
codehz
2020-01-07 20:44:28 +08:00
(听起来是因为文件句柄用光了
julyclyde
2020-01-09 11:29:28 +08:00
你们的客户有 26 万吗
maxbon
2020-01-11 14:33:17 +08:00
内核调一调,/etc/sysctl.conf
DinoStray
2020-03-08 21:34:05 +08:00
@julyclyde 7*24 百万以上并发 tcp
DinoStray
2020-03-08 21:35:41 +08:00
问题已经解决了, 把笔记在这里贴一下吧:

conntrack 限制

所有在内核中由 Netfilter 的特定框架做的连接跟踪称作 conntrack ( connection tracking )

达到最大限制后, 会报错
nf_conntrack: table full, dropping packet

查看当前系统设置最大连接数
cat /proc/sys/net/netfilter/nf_conntrack_max

查看连接跟踪有多少条目
cat /proc/sys/net/netfilter/nf_conntrack_count

vim /etc/sysctl.conf
net.nf_conntrack_max = 2000000

临时生效
sysctl -p

永久生效, 还需额外操作
http://xy.am/2015/04/26/nf-conntrack/
你只需要把 nf_conntrack 加到系统开机模块,就可以用 /etc/sysctl.conf 开机设置它了
echo "nf_conntrack" >> /etc/modules

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

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

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

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

© 2021 V2EX