- 系统配置
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