为了账号安全,请及时绑定邮箱和手机立即绑定

OpenShift 下的应用出现 504 Gateway Time-out 的解决方法

标签:
Docker

问题描述

应用中某些超长请求(响应时间通常超过30s)访问时出现 504 Gateway Time-out 错误。

webp

504-gateway-timeout-01.png

问题分析

OpenShift 的 Route 是通过高速反向代理 HAProxy 作为路由器来实现的,该反向代理默认的服务器超时时间为 30s

我们可以通过访问 OpenShift Origin 在 Github 上的项目源码来得到其他的配置的默认值,这些值都可以通过设置 HAProxy 路由器的 Deployment Config 中的环境变量来覆盖默认值。

openshift/origin-haproxy-router 镜像源码:

https://github.com/openshift/origin/blob/master/images/router/haproxy/conf/haproxy-config.template#L107

解决方案

覆盖环境变量 ROUTER_DEFAULT_SERVER_TIMEOUT 的默认值为 300s。具体操作步骤如下:

1. 为 admin 用户启用 cluster-admin 角色

oadm policy add-cluster-role-to-user cluster-admin admin

启用该角色之后,开发者以 admin 登陆 Web Console 就可以看见 OpenShift 所有的内部项目了。

2. 找到 router 的部署定义

点击 default 项进入,之后在左侧的功能菜单中选择 Applications / Deployments

webp

504-gateway-timeout-02.png

点击 router 进入部署配置的定义界面并切换至 Environment 选项卡,增加环境变量 ROUTER_DEFAULT_SERVER_TIMEOUT 并设置值为 300s,最后点击 Save 按钮保存设置。OpenShift 会自动触发一次更新部署。

webp

504-gateway-timeout-03.png



作者:莫失已忘
链接:https://www.jianshu.com/p/61567aa93515


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消