现象:通过nginx访问,偶现502

排查步骤:

1、查看日志,无异常日志打印

2、抓包分析,发现发送http请求后,被源站直接发fin。

 

一次 nginx502问题排查

 

 

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

4、过程中发现这个现象。

一次 nginx502问题排查

 

 

 

5、gdb dump,

崩溃位置在libmaxminddb.so中

一次 nginx502问题排查

 

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

 

一次 nginx502问题排查

 

 

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

一次 nginx502问题排查

 

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

一次 nginx502问题排查

 

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

一次 nginx502问题排查

 

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

一次 nginx502问题排查

 

相关文章:

  • 2021-07-07
  • 2022-03-10
  • 2022-12-23
  • 2022-01-11
  • 2021-10-21
  • 2021-10-25
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-05-12
  • 2022-01-18
  • 2021-07-28
  • 2021-10-27
  • 2022-12-23
  • 2021-10-04
相关资源
相似解决方案