java 504错误怎么解决_前端报504错误如何定位

5f55e97e5f0278334a13a90371533af3.gif

测试环境 membership 模块超时60s 问题定位步骤如下:

step1: 前端 debug 时查看到了504的响应-----(发现问题)

问题分析

nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,例如程序需要执行60秒,而nginx最大响应等待时间为30秒,这样就会出现超时。

step2:查看nginx log

==> access.log <==

10.7.0.13 - - [15/May/2020:16:42:19 +0800] 10.7.00.13:9301 60.001 60.001 ars-beta.test_webcn-la.com POST /api/gc/membership/tier/getMembershipTierByTest

HTTP/1.1 "504" 705 "-" "-" "Apache-HttpClient/4.5.3 (Java/1.8.0_144)"

可以看到nginx也是504的状态,于是可以查看后端对应的服务是10.7.00.13:9301

可以使用curl 来验证一下服务是否正常:curl -I http://localhost:9301/test.html

step3:查看9301端口状态:

java 504错误怎么解决_前端报504错误如何定位_第1张图片

wc -l 查看后大概有117个左右的连接,平时只有以下这样的情况

2ff1c7a03a2b1a38c974d3835cafd973.png

step4:结合业务查看membership.controller 的access.log(本日志记录了所有与本服务交互的请求处理), 查看调用请求的整个过程,有两个惊人发现:第一个是红框里面的ip, 第二个是红框里面的当前请求线程名称

java 504错误怎么解决_前端报504错误如何定位_第2张图片

step5:第一个红框的的ip 居然是我自己的ip, 这下子问题定位了,因为我本地有在请求membership 服务,并且是python开发的监控服务是否正常的应用所发出的请求。

java 504错误怎么解决_前端报504错误如何定位_第3张图片

step6:结论为:因为我本机在每五分钟(从上面的请求日志间隔可以窥探到)请求一次membership 服务的接口,用于保障beta环境的可用性验证,最终因为请求的membership 服务连接一直不能释放导致了membership 服务僵死掉。

查看9301端口状态时,存在这两个状态,说明如下:

0040a3568932fd0ceb1f62d2aadc8c0d.png

step7:解决方案:重新重启了服务就恢复了,不过还发现了mq 地址变更但代码配置里面未变更的问题并让开发修复,算是意外的收获。

如果你觉得文章不错的话,分享、收藏,在看,关注、打赏将会是对我的最大支持,也是我持续更新的最大动力

f467d4edcfb39dbc553a895bdf1023ac.png

f467d4edcfb39dbc553a895bdf1023ac.png

f467d4edcfb39dbc553a895bdf1023ac.png

999ca9d41cc1bf03729b58d52c20d473.gif

更多精彩内容请关注我们

你可能感兴趣的:(java,504错误怎么解决)