1.找到nginx的工作進程
ps aux |grep nginx
2.使用pstack查看函數調用
pstack 5439
#0 0x00007f7ca5aa8903 in __epoll_wait_nocancel () from /lib64/libc.so.6
#1 0x000000000043710d in ngx_epoll_process_events (cycle=0x95a480, timer=18446744073709551615, flags=1) at src/event/modules/ngx_epoll_module.c:573
#2 0x0000000000428614 in ngx_process_events_and_timers (cycle=0x95a480) at src/event/ngx_event.c:247
#3 0x0000000000435517 in ngx_worker_process_cycle (cycle=0x95a480, data=0x0) at src/os/unix/ngx_process_cycle.c:806
#4 0x0000000000431de3 in ngx_spawn_process (cycle=0x95a480, proc=0x435371 <ngx_worker_process_cycle>, data=0x0, name=0x4abd4b "worker process", respawn=-3) at src/os/unix/ngx_process.c:198
#5 0x0000000000434375 in ngx_start_worker_processes (cycle=0x95a480, n=1, type=-3) at src/os/unix/ngx_process_cycle.c:365
#6 0x00000000004339d3 in ngx_master_process_cycle (cycle=0x95a480) at src/os/unix/ngx_process_cycle.c:137
#7 0x00000000004035b3 in main (argc=3, argv=0x7ffc3c4063b8) at src/core/nginx.c:410
3.可以清楚地看到,有如下的函數調用順序
main -> ngx_master_process_cycle -> ngx_start_worker_processes -> ngx_spawn_process -> ngx_worker_process_cycle -> ngx_process_events_and_timers -> ngx_epoll_process_events -> epoll_wait_nocancel