一次 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、修改代码,存放头指针位置,释放头指针,问题解决。

 

posted @ 2020-12-14 11:54  897807300  阅读(806)  评论(0编辑  收藏  举报