12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理
12.21 php-fpm的pool
12.22 php-fpm慢执行日志
12.23 open_basedir
12.24 php-fpm进程管理
php-fpm的pool
Nginx可以配置多个虚拟主机,php-fpm同样也支持配置多个pool,每一个pool可以监听一个端口,也可以监听一个socket,等于把网站分开隔离互不影响,因为当一个网站资源耗尽后,进程就不提供服务了,然而会导致所有网站报错502,让他们进行隔离后可以让他们互相独立,互不影响。一个网站挂了,还有其他网站可以使用。
1.在php-fpm配置文件上再加入一个配置
- [www1]
listen = /tmp/php-fcgi1.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024 -
- 可以看到这个配置文件上有2个pool ,这样设置就可以区分开了
- /usr/local/php-fpm/sbin/php-fpm -t //检查语法
- /etc/init.d/php-fpm restart //重启服务
- ps aux|grep php-fpm //查看进程,可以看到下图有个2个进程,分别是www和www1,
-
php-fpm慢执行日志
通过php-fpm慢执行日志,我们可以非常清晰地了解到PHP脚本哪里执行时间长,它可以定位到具体的行。
1./usr/local/php-fpm/etc/php-fpm.conf
2.添加如下内容(在pool下)
request_slowlog_timeout = 1 //即php脚本执行超过1秒则记录日志
slowlog = /usr/local/php-fpm/var/log/www-slow.log //定义慢执行日志的路径和名字
3.
/usr/local/php-fpm/sbin/php-fpm -t //检查语法
/etc/init.d/php-fpm restart //重启服务
4.写一个php脚本 \\脚本2秒执行
<?php
echo "test slow log";
sleep(2);
echo "done"
?>
5.查看日志
cat www-slow.log
[13-Jun-2018 20:19:49] [pool www] pid 2811
script_filename = /data/nginx1/1.php //影响缓慢的脚本
[0x00007f87210dd1d8] sleep() /data/nginx1/1.php:3 //可以看到PHP脚本第三行是影响的关键
open_basedir
隔离其他目录~
1./usr/local/php-fpm/etc/php-fpm.conf
添加如下内容
php_admin_value[open_basedor]=/data/nginx1:/tmp/ //主要这里的路径要跟nginx.conf的目录相同否则会报错
2./etc/init.d/php-fpm restart //重启服务
3.测试,
curl -x127.0.0.1:80 test.com/1.php
php-fpm进程管理
如果是静态管理,只会剩下pm.max_children这个值()