- 咱們以前說過,推薦設置worker的個數爲cpu的核數,在這裏就很容易理解了,更多的worker數,只會致使進程來競爭cpu資源了,從而帶來沒必要要的上下文切換
- 並且,nginx爲了更好的利用多核特性,提供了cpu親緣性的綁定選項,咱們能夠將某一個進程綁定在某一個核上,這樣就不會由於進程的切換帶來cache的失效
- 由於每一個socket鏈接會佔用掉一個fd,因此這也會限制咱們進程的最大鏈接數
- 一個nginx能創建的最大鏈接數,應該是worker_connections * worker_processes。固然,這裏說的是最大鏈接數,對於HTTP請求本地資源來講,可以支持的最大併發數量是worker_connections * worker_processes
- 而若是是HTTP做爲反向代理來講,最大併發數量應該是worker_connections * worker_processes/2。由於做爲反向代理服務器,每一個併發會創建與客戶端的鏈接和與後端服務的鏈接,會佔用兩個鏈接
- 當客戶端的一次訪問,須要屢次訪問同一個server時,打開keepalive的優點很是大,好比圖片服務器,一般一個網頁會包含不少個圖片。打開keepalive也會大量減小time-wait的數量。
tips:
#define ngx_cdecl __cdecl
nginx
__cdecl
和__stdcall
函數調用約定
- 調用約定是函數類型的一部分,所以函數的聲明和定義處調用約定要相同,不能只在聲明處有調用約定,而定義處沒有或與聲明不一樣