三、nginx的函数调用(参考《深入剖析Nginx》)

1.找到nginx的工作进程

ps aux |grep nginx


image.png

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,769评论 24 1,002
  • 本文系转载》》》》》》》》》》》》》》》》 编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由陈科在...
    demop阅读 8,115评论 0 7
  • 框架代码分析 核心模块 启动过程(main) 1、全局ngx_cycle_t对象 1、ngx_init_cycle...
    AKEEM阅读 1,124评论 1 0
  • / 1 / 拍照片,只想记录简单真实的生活,不需要隆重刻意。 因为我相信,生活是美好的,只要带着爱,就能感受到平凡...
    白喵的自我实现阅读 478评论 10 5
  • 海清路转入广粤天地北门处,迎面走来母子俩,未及细看,只听母用严厉口吻责子道:“你再玩电脑的话我送你去温哥华”。我...
    山支可可阅读 209评论 2 2