1. Nginx生成core的配置
- ulimit -a 可以查看系统core文件的大小限制(第一行),core文件大小设置为0, 即没有打开core dump设置。
core file size (blocks, -c) 1024
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 774535
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 655360
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 10240
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
如果未开启,则执行
ulimit -c unlimited
- 修改nginx.conf配置文件
worker_rlimit_core 1000m;
working_directory /usr/local/nginx/logs;
2. Nginx core生成之后的调试
gdb process core.1123
3. 如果没生成core文件
- 执行 dmesg|grep nginx
nginx[6802]: segfault at 41f79 ip 00000000004efef4 sp 00007ffe3ee73fe0 error 4 in lmss[400000+142000]
- 使用addr2line工具执行 addr2line -e binary 00000000004efef4 -f。其中00000000004efef4就是上面字段ip后面的值,binary是可执行文件, 然后就可以找到出问题的文件名和行号