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