CN10010
V2EX  ›  宽带症候群

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

By CN10010 at 2020 年 8 月 6 日 · 3529 次点击

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

重启服务后

出现问题后 web

haproxy 日志

7 条回复  •  2020-08-08 10:25:27 +08:00
blless
   1
blless  
   2020 年 8 月 6 日 via Android
我印象中好像处理过一次问题,
haproxy 在处理配置文件的 maxconn 还是啥反正就是那个最大限制数的时候,实际会打开 2 倍的文件数?(就是 unlimit 修改的那个值)
所以如果 unlimit 的文件数没有 maxconn 的两倍的话,默认只会使用 1000,而且不会报错
所以 maxconn 并不是越大越好,只要够用就好

不一定是你说的问题,但是你可以排查一下
rrfeng
   2
rrfeng  
   2020 年 8 月 6 日 via Android
就是 ulimit 的问题,nofile 设大点。

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

ls /proc/pid/fd 算下有多少 open file
CN10010
   3
CN10010  
OP
   2020 年 8 月 6 日 via Android
@blless 试了一下,还是不行,搞不懂什么原因,刚重启服务都是好好的,过了几分钟 time_wait 一下暴增,又死了。不过还是谢谢靓仔😁
CN10010
   4
CN10010  
OP
   2020 年 8 月 6 日 via Android
@rrfeng 这两个文件都没有,直接提示 no such file or directory,你用的也是 openwrt 吗
blless
   5
blless  
   2020 年 8 月 6 日 via Android
首先修改确定 ulimit 有生效 然后 maxconn 不要配置太高 但是 ulimit 一定要比 maxconn 两倍高
还有就是 内网 http 转发其实可以开 keepalive,加 http reuse
fovecifer
   6
fovecifer  
   2020 年 8 月 7 日
一般都是没有 keepalive 导致的 time_wait 一般在先断开链接的那一侧很多
zwy100e72
   7
zwy100e72  
   2020 年 8 月 8 日 via iPhone
pid 不是字面上的 pid 而是进程 id

正常的命令应该是 cat /proc/123/limits 这样
© 2026 V2EX · 27ms · 3.9.8.5