- 系統配置
ulimit -n
查看系統資源限制. 修改/etc/security/limits.conf
增加配置
* soft nofile 32768
* hard nofile 65535
- Nginx 配置
在 Nginx 配置文件中 添加 backlog 指定值.
# ...
server {
listen 80 default backlog=8192;
# ...
}
- PHP-FPM 配置
配置文件/etc/php/7.2/fpm/pool.d/www.conf
修改
listen.backlog = 8192
; 方式一: static
pm = static
pm.max_children = 200
;方式二: dynamic
pm = dynamic
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 200
;處理完10000個請求后重啟該進程
pm.max_requests = 10000
每個PHP進程按分配20-30M的內存來計算.
使用static
方式, 只需關注max_children
值就可以.100
個進程大概需要2-3G
內存支持,8G
的服務器建議開400
個,16G
的服務器可以開800
個.
使用dynamic
方式, 需要關注 開始啟動進程數:start_servers
, 空閑時開啟的進程數:min_spare_servers
, 最大開啟進程數:max_spare_servers
- 重啟 PHP-FPM
sudo /etc/init.d/php7.2-fpm restart