启用mod_remoteip后高并发压测出现SSL Handshake failed(5)求助
问题分析与解决方案
针对启用Proxy Protocol后高并发场景下出现的SSL handshake failed(5)错误,结合你的配置和场景,给出以下排查方向和解决方法:
1. 调整Apache并发连接限制
高并发下Apache的连接处理能力不足是常见诱因,检查并调整MPM模块参数:
- 编辑Apache主配置文件(如
httpd.conf或apache2.conf),找到MPM配置段:
<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 # 根据服务器内存调整,例如4G内存可设置为1024-2000 MaxRequestWorkers 1500 MaxConnectionsPerChild 0 </IfModule>
- 若使用event或worker模块,对应调整
MaxRequestWorkers和ThreadsPerChild参数,确保总并发处理能力覆盖压测需求。
2. 修正Proxy Protocol配置一致性
确认HAProxy与Apache的Proxy Protocol配置完全匹配:
- HAProxy的
server指令默认使用send-proxy(v1版本),需在Apache虚拟主机配置中明确指定协议版本:
RemoteIPProxyProtocolVersion 1
- 确保Apache的443端口同时支持SSL和Proxy Protocol,无端口冲突或配置重叠。
3. 提升系统级资源限制
高并发场景下系统文件句柄、连接队列限制会成为瓶颈:
调整文件句柄限制
编辑/etc/security/limits.conf,添加:
haproxy soft nofile 65535 haproxy hard nofile 65535 apache soft nofile 65535 apache hard nofile 65535
重启HAProxy和Apache服务生效。
优化内核网络参数
编辑/etc/sysctl.conf,添加:
net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30
执行sysctl -p使参数立即生效。
4. 调整超时配置
延长HAProxy和Apache的超时时间,避免高并发下连接过早断开:
- HAProxy的
defaults段调整:
timeout connect 30s timeout server 2m
- Apache配置中添加:
Timeout 120
5. 排除压测工具限制
ab工具在极高并发下可能存在客户端资源瓶颈,尝试用wrk等工具复现问题:
wrk -c 1020 -d 30s https://XXXX
若其他工具无报错,则说明是ab自身限制导致。
额外排查步骤
将Apache的日志级别调为debug,重新压测后查看error_log,可能会捕获到之前未发现的连接处理错误:
LogLevel debug
内容的提问来源于stack exchange,提问作者Ridae HAMDANI
相关产品推荐
相关产品推荐

