Nginx+PHP-FPM集群不跑满
来源:互联网 发布:js获取json中的键值 编辑:程序博客网 时间:2024/06/05 11:57
- 服务器配置架构
硬件:
Nginx:4核4G,外网200M
PHP-FPM:4核4G*8台
软件:
Nginx:1.2.10
PHP:5.6.30 - 出现的问题
使用ab进行压力测试时,压力测试的结果偏低(1200req/s)。Nginx负载以及带宽都偏低,各PHP-FPM节点占用也偏低,查看PHP-FPM的status,其中max active processes只有50多。
PHP-FPM的配置:
pm = dynamic
pm.max_children = 512
理论上max_children应该能跑满512个进程,可是现实情况并没有这么理想。观察后发现,max listen queue刚好到达128后就没有新的请求进入,查看Nginx的access_log发现,压力测试后面请求的PHP-FPM节点都集中同一台服务器了并没有轮流请求每一台服务器。
因此,应该是Nginx在放到前面几台PHP-FPM服务器后发现队列已经满了接收不了新的请求,于是把它当做是已经宕机的服务器,列到失败列表后指定时间后重试,可是实际上PHP-FPM只需要很短的时间就把队列里面的任务处理完成。因此考虑把队列加大避免太早出现队列满载。 - 解决方案
根据PHP-FPM.cnof中的描述,max listen queue的大小受backlog的大小限制,因此需要修改系统的backlog大小从而使队列长度更大:
sysctl -w net.core.netdev_max_backlog = 65535
sysctl -w net.ipv4.tcp_max_syn_backlog = 65535
sysctl -w net.core.somaxconn = 65535
sysctl -p
修改后重启PHP-FPM即可以看到max listen queue大小为65535 - 效果
通过access.log查看结果,请求均能平均分发到各台服务器中。
阅读全文
0 0
- Nginx+PHP-FPM集群不跑满
- nginx php-fpm配置
- nginx php-fpm调优
- nginx+PHP-FPM调优
- nginx +php-fpm
- nginx php-fpm配置
- mac nginx php-fpm
- nginx php-fpm调优
- nginx + php-fpm优化
- mac nginx php fpm
- php fpm nginx解析
- nginx php-fpm设置
- nginx php-fpm
- PHP-FPM Nginx 504
- nginx配置php-fpm
- nginx配置php-fpm
- nginx+php-fpm
- Nginx与Php-fpm
- MATLAB学习笔记 问题集
- 360加固带系统签名apk的步骤
- 高并发系统之降级
- (转)写给后端程序员的HTTP缓存原理介绍
- 中钰睿泓:观察力才是最基础的能力
- Nginx+PHP-FPM集群不跑满
- 在IAR新建CC3200工程所需配置项
- 数据库事务隔离级别和锁实现机制
- nginx 指令
- 自定义提示框
- 瞎杰瑞写
- ckeditor4.6.2在extjs2的tab页,报错this.document.getWindow().$.getSelection() undefined
- sql之left join、right join、inner join的区别
- windows网络编程(八)——重叠I/O+多线程实现简单的聊天(windows服务器端 windows客户端)