三、nginx的函數(shù)調(diào)用(參考《深入剖析Nginx》)

1.找到nginx的工作進(jìn)程

ps aux |grep nginx


image.png

2.使用pstack查看函數(shù)調(diào)用

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.可以清楚地看到,有如下的函數(shù)調(diào)用順序
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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容