OpenShift Pod长时间闲置后出现Gateway timeout问题咨询
OpenShift Apache Pod闲置后Gateway Timeout问题判定与解决
问题归属判定
该问题属于OpenShift路由/集群网络侧机制触发的问题,而非Apache应用侧故障,核心匹配特征如下:
- 请求未进入Apache Pod就返回超时,Apache日志无对应报错记录
- 仅长时间无活动后首次访问触发,重建Pod即可恢复
- 重建Pod会触发集群Endpoint更新,强制刷新路由层的后端转发规则,因此服务恢复
根因说明
OpenShift Route底层基于HAProxy实现,搭配集群内部网络的流表老化机制共同触发该问题:
- HAProxy默认TCP空闲超时时间为
300s,集群内部OVS流表、kube-proxy的会话老化时间通常在900s~3600s区间 - 长时间无请求时,路由层到Pod的会话转发条目会被老化删除,HAProxy未主动触发健康检查刷新后端状态时,新请求会尝试使用失效的转发条目,最终抛出Gateway Timeout错误
验证方法
出现超时问题时不要重建Pod,按以下步骤验证:
- 直接访问Pod IP+Apache服务端口,命令参考:
curl http://<PodIP>:<端口>,如果能正常返回说明Apache本身运行无异常 - 继续访问对应Service的ClusterIP,如果访问正常,即可100%确认问题出在Route转发层
修复方案
- Route侧配置调整:给对应Route添加注解延长空闲超时时间,示例配置如下,可根据业务场景调整超时时长:
annotations: haproxy.router.openshift.io/timeout: 3600s - 应用侧适配:在Apache配置中开启TCP keepalive,设置保活间隔小于集群默认超时时间,主动发送保活包避免会话被老化
- 健康检查配置:给Apache工作负载添加就绪探针,HAProxy会根据探针状态主动刷新后端转发规则,避免使用失效的会话条目
内容的提问来源于stack exchange,提问作者user2636464
相关产品推荐
相关产品推荐

