這個年頭 VPS 機器越來越利害,但是系統的預設設定上卻沒什麼改變,導致 cpu loading 還沒一半,系統就死掉了。以 nginx 來說,除了修改 worker_connections 、worker_processes、worker_rlimit_nofile 之外,還必需要增加系統內建的 ulimit ,預設為 1024 ,我最後是決定把 root 提升到 65536, 其它權限則改為 32768 。由於每次安裝新系統都要執行,把它包成 script 是必要的。這個 script 主要是修改 /etc/security/limits.conf 和 /etc/sysctl.conf,環境是 ubuntu 16.04:
修改 / 安裝 / install: https://gist.github.com/girvan/a341513654ad6b1cbb7f365b9f68fa7b
回覆 / 還原 / remove: https://gist.github.com/girvan/2f70eb52fd259f6c18a062e015785bc2
我自己是用 ab 來測試 ab -n 10000 -c 500 http://....
-c 從 500 ~ 1000 來反覆測試看看極限值有沒有提升。
這個 ulimit 修改適用於靜態檔案,php 的極限值有提升,但沒這麼多,可以再做其它設定去增加 php 的連線數。php 的連線數我沒有做調整,因為還不到極限值 cpu 就滿載了,調了也沒用,我這邊是採用 nginx 的 request limit 來保護 php ,還蠻有效的。