兩種方式可以實現, 你可以通過ulimit設置os的: open files , 你還可以通過(nginx)配置?worker_rlimit_nofile?來申明你期望的值。
Nginx 限制:
除了注意操作系統的限制, 現在我來深入到Nginx本身,看看一些指令和方法,我們可以用它來調整Nginx.
Worker Processes:
worker_process是Nginx的主干, 一旦主進程綁定到指定的IP和端口,就會使用nginx指定的用戶孵化出子進程, 之后他們會處理所有的工作. Workers 不是多線程的, 所以不能擴展它超過CPU的核數. 所以我們應該理解設置多個workers的原理, 通常一個CPU核對應一個worker. 過猶不及,2-4個workers會傷害CPU, 在CPU成為問題之前Nginx會遇到其他的瓶頸.而通常你只是看到了空閑的進程.(這段翻的太爛了希望大家多多改進)
當你正在處理下面這種情況, 你有很多的阻塞(blocking)磁盤IO,這是你可以適當增加worker_process的值. 你需要針您的配置進行測試,檢查靜態文件的等待時間(waiting time), 如果值比較大,可以適當的增加worker_process.(這段翻譯完有想哭的感覺)
Worker Connections:
worker_connections?是個稍稍有點怪的概念. 我不是很了解這個指令的目的, 但是它有效的限制了在同一時間內每個worker可以維護的連接數. 如果我沒猜錯的話, 這個配置是為了確保在keep-alive配置不正確的情況下, 當你使用的端口將要耗盡之時,增加連接數.(這個翻譯的好難不知道是否正確因為作者也是forced to guess 我也只能被逼去猜了望指正)。