一、nginx工作进程处理简单请求时的系统调用
1.找到nginx的工作进程
ps aux |grep nginx
2.使用strace监控该进程
strace -p 5439
3.对nginx发起简单get请求
wget localhost
4.strace监控结果
二、简单分析(参考《深入剖析Nginx》)
1.epoll_wait返回值为1,表示1个描述符存在可读写事件。epoll_wait用于轮询I/O事件的发生。关于epoll,可以参考epoll_create, epoll_ctl和epoll_wait 实例讲解。
2.accept4接受请求,返回的3为socket的文件描述符。
3.epoll_ctl把accept4返回的套接字加入到事件监听机制里。
4.recvf从该socket文件描述符内读取数据。
5.stat判断文件index.html是否存在。
6.open打开文件index.html,返回文件描述符9。
7.fstat获取文件状态
7.writev通过描述符3将响应头写出。
8.sendfile把文件描述符9代表的文件通过描述符3f发出。
9.write往文件描述符4中写日志信息。
10.close关闭文件描述符9。
...