![Apache 2.4 MPM 事件模块导致 AWS 应用程序负载均衡器 (ALB) 出现间歇性 502 错误并导致响应时间变慢](https://linux22.com/image/773339/Apache%202.4%20MPM%20%E4%BA%8B%E4%BB%B6%E6%A8%A1%E5%9D%97%E5%AF%BC%E8%87%B4%20AWS%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%99%A8%20(ALB)%20%E5%87%BA%E7%8E%B0%E9%97%B4%E6%AD%87%E6%80%A7%20502%20%E9%94%99%E8%AF%AF%E5%B9%B6%E5%AF%BC%E8%87%B4%E5%93%8D%E5%BA%94%E6%97%B6%E9%97%B4%E5%8F%98%E6%85%A2.png)
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 错误完全消失。
调试
我设法将 ALB 返回的 502 错误追溯到 Jetty 返回的 408 错误。Jetty 似乎因为读取请求超时而抛出错误。
使用 Apache 2.4.41-4ubuntu3.8 运行 Ubuntu 20.04。
有趣的笔记
- 通过 AWS 网络负载均衡器 (NLB) 向同一 Apache 实例发出的请求响应迅速,并且不会显示任何 502 错误