一次nginx “time out”故障排查

研发请求协助排查一个nginx故障。

描述如下:

在内部环境测试没问题。

打包到生产环境后,访问nginx接口地址超时。

研发比对后怀疑是nginx版本不一致导致。内部版本1.23.2,生产环境1.23.1.

收到信息第一感觉不是nginx的问题。不过先测试一下,现象跟研发描述的一样。

登录服务器,看了nginx.conf配置,发现访问这个端口后,实际做了转发。转发给内网地址:http://10.0.0.7:8000

这个端口是java启动的一个服务。

使用ss -lntp查看,这个服务端口是存在的。

在使用内存命令测试端口
nc -w 2 -z -v 10.0.0.7 8000

端口也是有反应。

老办法,查看access.log,看到输出500错误码。

再查看error.log,确实有timeout的错误提示。

 这样看来是转发给接口地址后没有了反馈。

不过为了排除版本问题,还是升级到1.23.2,当然问题依旧。

研发只好再代码里添加的debug信息。

根据debug信息输出,可以判断到,请求接受到了,但是再调用第一个function时就没有反馈信息了。虽然还不知道啥问题,但是基本确定就是程序某个地方导致故障。

接下来就是研发一点点排查,最终结果是代码打包时,没有修改database连接相关信息,保留的是内部环境参数。连接数据库错误后导致后续处理超时卡死。

总结:

内部测试通过,放到生产环境时出现问题,很多时候就是使用了内部环境参数导致的。

建议把相关参数提取出来,作为配置文件单独存放。

排查问题,顺着执行流,排除其它环节后,剩下的环节就是问题所在。

最后一点就是不能急躁,保持冷静。

猜你喜欢

转载自blog.csdn.net/bigwood99/article/details/128237451
今日推荐