一次 nginx502问题排查
现象:通过nginx访问,偶现502
排查步骤:
1、查看日志,无异常日志打印
2、抓包分析,发现发送http请求后,被源站直接发fin。

3、注释代码关键逻辑,测试。定位到是access.lua阶段处理的问题。但因为没有日志,代码段太多,只能逐步排查。
4、过程中发现这个现象。

5、gdb dump,
崩溃位置在libmaxminddb.so中

6、github中阅读libmaxminddb相关源码,

7、继续排查调用相关api的方法

8、继续看源码,会释放一个pool,和gdb dump的位置能对应上

9、查看相关操作代码。有个遍历赋值操作。怀疑是遍历操作引起的。

10、修改代码,存放头指针位置,释放头指针,问题解决。


浙公网安备 33010602011771号