php-fpm配置多个进程池

背景:
在用Jmeter测试时,在高并发时,php-fpm会出现unix socket的问题。在nginx的error log能查看到错误。在网上查了资料,原因可能是unix socket方式不太稳定。把php-fpm改成用ip:port的方式,只是有所改善,但是仍然不太理想。
因为是在高并发时才会出现不稳定的问题,所以猜想使用多个unix socket通信应该可以解决,所以尝试使用多个php-fpm进程池不同的unix socket,配合nginx upstream。
注意1:这样配置的主要目的是减少因为单个unix socket不稳定而导致大量的502 bad gateway报错。实际上并不会提高站点的处理速度。
注意2:只是在本地环境做的一次实践尝试。具体的优化其实还是要根据具体生产环境来做。

环境:
Ubuntu
php7.2
nginx1.14

php和nginx都是用apt-get安装的,配置文件都是按默认路径。

1.修改php-fpm配置

复制原来的进程池配置。
cp /etc/php/7.2/fpm/pool.d/www.conf /etc/php/7.2/fpm/pool.d/www1.conf

修改www1.conf 的listen socket
listen = /run/php/php7.2-fpm1.sock
其实可以把sock放到/dev/shm目录下使用的内存读写更快,这里不展开。

重启php-fpm,再查看一下php-fpm的进程
ps -aux |grep php
在这里插入图片描述
可以看到不同的进程池。

2.修改nginx配置

修改/etc/nginx/config.conf
http中增加upstream配置。(当前是用php_backend这个名字)
官网资料:http://nginx.org/en/docs/http/ngx_http_upstream_module.html
截图中注释了ip:port的连接方式,只使用unix socket的方式。
在这里插入图片描述
修改location的配置
在这里插入图片描述
重启nginx。
再次运行Jmeter,在高并发的时候,有所改善。和之前相同并发数时也没再返回502。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值