php-fpm相关配置
最近测试环境老是被 php-fpm打满,但是又不知道怎么排查,分析不出是哪些请求占用导致 php-fpm 没有释放,于是学习了一下 php-fpm 的配置;
通过 /status可以查看子进程处理请求的信息,但是这个一般不会开放,只能在自己的机器搞搞;测试时配置了慢日志,sleep 了10 秒,发现没往 log.slow文件里写日志,还不确定是什么原因。
- 查看 php 配置文件 ini 的路径
php -i | grep .ini
- 查看 php-fpm 配置文件路径
ps -ef | grep php-fpm
- php-fpm 重启
关闭
平滑重启kill -INT `cat /usr/local/var/run/php-fpm.pid`
暴力重启kill -USR2 `cat /usr/local/var/run/php-fpm.pid`
先关闭,再启动killall php-fpm && /usr/local/sbin/php-fpm &
- 修改子进程管理模式,pm 配置
修改配置pm = static
pm.max_children = 3
表示固定子进程数为 3 个
修改配置pm = ondemand
pm.max_children = 2
表示子进程按需生成,最多2个,pm.process_idle_timeout
表示空闲进程空闲多少秒后超时退出
修改配置pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
表示子进程是动态生成,服务启动时创建 2 个子进程,最大空闲进程 3 个,最小空闲进程 1 个,最多子进程 5 个
- 配置访问进程状态
修改配置pm.status_path = /status
修改 nginx 配置
重启相关服务后,访问 xxx.com:8888/status?json&fulllocation /status { fastcgi_pass php:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; fastcgi_param HTTP_X_FORWARDED_FOR host.docker.internal; }
可以看到相关指标
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: