Apache 2.4 MPM 事件模块导致 AWS 应用程序负载均衡器 (ALB) 出现间歇性 502 错误并导致响应时间变慢

Apache 2.4 MPM 事件模块导致 AWS 应用程序负载均衡器 (ALB) 出现间歇性 502 错误并导致响应时间变慢

tldr;当在高吞吐量 AWS 应用程序负载均衡器后面运行时,如何将 Apache MPM 事件模块配置为功能性反向代理?

布局

AWS 应用程序负载均衡器 -> Apache 2.4.x -> AWS 内部 TCP 负载均衡器 (NLB) -> Jetty 应用服务器

使用下面显示的配置设置,Apache MPM 事件模块在 AWS 应用负载均衡器后面不稳定。响应时间大大增加,并且请求会因 ALB 返回的 502 错误而间歇性失败。

工作器配置

ServerLimit 250
StartServers 100
MinSpareThreads 75
MaxSpareThreads 250
ThreadLimit 64
ThreadsPerChild 64
MaxRequestWorkers 8000

ProxyPass 配置

enablereuse=on acquire=10 connectiontimeout=2 timeout=55 max=400 retry=0 keepalive=on

MPM 事件与 MPM 工作者

切换到 MPM 工作模块后,响应时间立即得到改善,502 错误完全消失。

目标响应时间 - MPM 事件到 MPM 工作者

502 错误 - MPM 事件到 MPM 工作者

调试

我设法将 ALB 返回的 502 错误追溯到 Jetty 返回的 408 错误。Jetty 似乎因为读取请求超时而抛出错误。

使用 Apache 2.4.41-4ubuntu3.8 运行 Ubuntu 20.04。

有趣的笔记

  • 通过 AWS 网络负载均衡器 (NLB) 向同一 Apache 实例发出的请求响应迅速,并且不会显示任何 502 错误

相关内容