二、nginx工作進程處理簡單請求時的系統(tǒng)調用(參考《深入剖析Nginx》)

一、nginx工作進程處理簡單請求時的系統(tǒng)調用
1.找到nginx的工作進程

ps aux |grep nginx


image.png

2.使用strace監(jiān)控該進程

strace -p 5439

3.對nginx發(fā)起簡單get請求

wget localhost

4.strace監(jiān)控結果


image.png

二、簡單分析(參考《深入剖析Nginx》)
1.epoll_wait返回值為1,表示1個描述符存在可讀寫事件。epoll_wait用于輪詢I/O事件的發(fā)生。關于epoll,可以參考epoll_create, epoll_ctl和epoll_wait 實例講解。
2.accept4接受請求,返回的3為socket的文件描述符。
3.epoll_ctl把accept4返回的套接字加入到事件監(jiān)聽機制里。
4.recvf從該socket文件描述符內讀取數(shù)據(jù)。
5.stat判斷文件index.html是否存在。
6.open打開文件index.html,返回文件描述符9。
7.fstat獲取文件狀態(tài)
7.writev通過描述符3將響應頭寫出。
8.sendfile把文件描述符9代表的文件通過描述符3f發(fā)出。
9.write往文件描述符4中寫日志信息。
10.close關閉文件描述符9。
...

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容