NGINX的高併發處理

NGINX的worker搶佔機制

在master裏面,先建立需要lfd,然後fork出多個worker進程,當用戶進入nginx服務的時候,每個worker的lfd變的可讀,並且這些worker會搶佔一個accept_mutex的鎖,一個worker得到accept_mutex這個互斥量,其他的worker就不能佔有。搶到這個accept_mutex的worker就開始讀取請求-解析請求-處理請求,數據徹底返回客戶端之後,這個事件就算結束。

NGINX的高併發

nginx的高併發就是通過worker的搶佔機制同時搭配了異步非阻塞方式來實現的。

master進程只進行listen,accept等處理都是在worker進程完成的。當worker得到client的請求時,對請求並不是一次性處理完,而只是處理一部分,處理到請求阻塞的時候,worker不會一直等着該請求阻塞完成,而是會去做其他客戶的請求,這個切換是客戶請求主動讓出的,不需要任何代價。這樣就實現了一個worker可以同時處理多個client的請求。從而實現高併發。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章