1、情况说明
下游服务调用网关会出现30s超时的情况,请求一会好,一会超时的情况,网关日志可以看到请求有的正常,有的30s超时
2、具体盘查思路如下
- 首先怀疑是后端服务出现故障导致,然后盘查后端服务,多次请求接口都是正常返回,所以排查后端服务问题
- 然后盘查alb,是否正常,多次通过alb地址访问接口地址依旧是正常返回,所以也不是alb的问题
- 通过上面两个步骤的盘查可以基本排除了下游服务问题
- 然后盘查网关调用后端服务是否正常,在网关服务器通过后端的alb地址直接调用接口,多次请求,会出现30s超时的情况
- 到此盘查出来是网关问题导致,但是具体是什么原因导致网关返回30s超时,还需要具体分析
- 盘查网关服务器各种指标是否正常,指标都正常
- 通过dig命令在网关服务器解析出来后端的alb地址和在下游服务器解析出来的alb地址不一致
- 由此参测是因为aws的alb地址变动,网关解析记录没有及时更新导致
- 然后通过reload网关服务器后,查看请求一切正常,没有再出现30s超时情况
- 由此确定是由于aws的alb地址变动,网关解析记录没有及时更新导致
3、通过nginx的插件jdomain可以实现域名的动态解析来解决此问题
配置如下:
resolver 8.8.8.8;
upstream www {
jdomain www.bgxwz.com port=80 interval=20; #每隔20s做一次解析
}
server {
listen 80;
server_name www.bgxwz.com;
location / {
proxy_set_header Host $proxy_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $remote_addr;
proxy_pass http://www;
}
}
评论区