有偿求解决 haproxy 负载均衡端口耗尽的问题

2020-08-06 21:00:46 +08:00
 CN10010

我是穷叼毛,求大佬 50 解决。 在本地用的 haproxy 做负载均衡 x86 openwrt 几天测试下来一直这样,在网上看了很多方法,各种改 ulimit 值,关闭日志,端口复用,也都试过,运行不到半个钟就死了,重启 haproxy 服务之后又可以用个几十分钟,然后又死,一直重复这种问题。一看网络连接,一堆的 TIME_WAIT 短时间内网络根本不会产生这么多,这究竟是什么问题。 有靓仔遇到过这种问题吗,我好绝望

2434 次点击
所在节点    宽带症候群
7 条回复
blless
2020-08-06 21:57:31 +08:00
我印象中好像处理过一次问题,
haproxy 在处理配置文件的 maxconn 还是啥反正就是那个最大限制数的时候,实际会打开 2 倍的文件数?(就是 unlimit 修改的那个值)
所以如果 unlimit 的文件数没有 maxconn 的两倍的话,默认只会使用 1000,而且不会报错
所以 maxconn 并不是越大越好,只要够用就好

不一定是你说的问题,但是你可以排查一下
rrfeng
2020-08-06 22:07:28 +08:00
就是 ulimit 的问题,nofile 设大点。

cat /proc/pid/limits 查看进程当时的限制值

ls /proc/pid/fd 算下有多少 open file
CN10010
2020-08-06 22:14:28 +08:00
@blless 试了一下,还是不行,搞不懂什么原因,刚重启服务都是好好的,过了几分钟 time_wait 一下暴增,又死了。不过还是谢谢靓仔😁
CN10010
2020-08-06 22:18:02 +08:00
@rrfeng 这两个文件都没有,直接提示 no such file or directory,你用的也是 openwrt 吗
blless
2020-08-06 22:44:57 +08:00
首先修改确定 ulimit 有生效 然后 maxconn 不要配置太高 但是 ulimit 一定要比 maxconn 两倍高
还有就是 内网 http 转发其实可以开 keepalive,加 http reuse
fovecifer
2020-08-07 08:29:52 +08:00
一般都是没有 keepalive 导致的 time_wait 一般在先断开链接的那一侧很多
zwy100e72
2020-08-08 10:25:27 +08:00
pid 不是字面上的 pid 而是进程 id

正常的命令应该是 cat /proc/123/limits 这样

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

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

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

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

© 2021 V2EX