You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HAProxy停止转发流量但未崩溃且无日志记录问题排查求助

HAProxy停止转发但进程存活问题排查解答

1. 是否有人遇到过类似情况?

HAProxy 1.6.x(尤其是1.6.3这类早期版本)确实存在不少已知问题会导致流量停止转发但进程保持活跃:

  • 长连接场景下的文件描述符(FD)泄漏,耗尽后无法新建套接字,但进程不会崩溃
  • SSL会话复用模块的特定bug,导致无法处理新的SSL连接请求
  • 内核参数与HAProxy配置不匹配,引发连接跟踪表耗尽或套接字队列阻塞

这类问题在旧版本中并不少见,很多用户通过升级版本或调整资源限制解决了问题。

2. 未排查的日志位置与配置优化建议

待排查的信息/日志

  • HAProxy统计套接字数据:如果已配置stats socket,故障时执行以下命令抓取实时状态:
    echo "show info" | socat /var/run/haproxy.sock stdio
    echo "show stat" | socat /var/run/haproxy.sock stdio
    
    重点查看Maxconn、CurrConns、FileDescriptors等指标,判断是否资源耗尽。
  • 进程资源限制:查看HAProxy进程的文件句柄上限:
    cat /proc/$(pidof haproxy)/limits
    
    若Max open files数值较低(比如默认的1024),无法支撑100+服务的并发连接需求。
  • 内核网络日志:检查/var/log/kern.log,查看是否有nf_conntrack: table full这类连接跟踪表耗尽的报错;若使用UFW防火墙,同步检查/var/log/ufw.log是否有拦截规则导致流量中断。
  • 系统调用跟踪:故障时用strace跟踪HAProxy进程,定位阻塞点:
    strace -p $(pidof haproxy)
    
    若进程卡在accept()、poll()等调用上,可直接定位到资源或内核层面的问题。

配置修改增强日志与稳定性

  • 开启调试级日志:修改haproxy.cfg中的日志配置,将日志级别提升至debug:
    log /dev/log local0 debug
    
    注意调试日志会产生大量数据,建议临时开启并配置日志轮转(通过logrotate)。
  • 提升文件句柄限制:在/etc/security/limits.conf中添加:
    haproxy soft nofile 65535
    haproxy hard nofile 65535
    
    重启HAProxy后生效,确保进程能打开足够的套接字。
  • 启用统计套接字:在haproxy.cfg中添加:
    stats socket /var/run/haproxy.sock mode 660 level admin
    
    方便随时抓取实时状态,无需依赖日志。
  • 升级HAProxy版本:1.6.3是2015年的老旧版本,建议升级至1.6.x分支的最新稳定版(如1.6.15),或直接迁移至2.x系列(需注意配置兼容性),新版本修复了大量旧版本的连接管理bug。
  • 优化超时与连接限制:配置合理的超时参数与连接上限,避免无效连接占用资源:
    timeout client 30s
    timeout server 30s
    timeout connect 5s
    maxconn 10000
    

内容的提问来源于stack exchange,提问作者LucasY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 22:28:00