12-3 12 php-fpm pool 慢日志 open_basedir 进程
2017-10-31 00:00
746 查看
12.21 php-fpm的pool
12.22 php-fpm慢执行日志
12.23 open_basedir
12.24 php-fpm进程管理
方法一:主配置文件增加,复制原有并修改即可
方法二:创建多个pool文件,放到下级目录
第一步:转移原有[www]pool并创建[axiang]pool
第二步:通过axiang.sock,将nginx虚拟主机bbb.com的php请求,对接到php-fpm服务的[axiang]pool
试用axiang.sock
![](http://oshv1dmrx.bkt.clouddn.com/201708061928_640.png)
选择nginx的aaa网站测试
![](http://oshv1dmrx.bkt.clouddn.com/201708092114_349.png)
看到aaa.com网站在使用[www]pool
![](http://oshv1dmrx.bkt.clouddn.com/201708092133_140.png)
在www池里加入下面两行,表示访问过程大于1秒则记录日志到哪里
测试
![](http://oshv1dmrx.bkt.clouddn.com/201708092110_530.png)
虽然监听的是127.0.0.1:9000端口,curl -x192.168.83.138:80 aaa.com/slow.php命令依然可以生成慢日志,说明监听的ip及端口只是php与nginx通信的桥梁,与curl访问的ip及端口没有关系
pool中加入
![](http://oshv1dmrx.bkt.clouddn.com/201708092200_973.png)
curl访问没有问题
开启错误日志
![](http://oshv1dmrx.bkt.clouddn.com/201708092208_216.png)
error_log 定义日志路径
![](http://oshv1dmrx.bkt.clouddn.com/201708092209_118.png)
error_reporting 定义日志记录范围
测试,将open_basedir的路径改错
![](http://oshv1dmrx.bkt.clouddn.com/201708092212_219.png)
pool的open_basedir的作用是限定pool服务的网站根目录,并不限定网站。如果aaa.com与bbb.com都是用的/data/www/aaa.com则没问题。
apache的open_basedir,在虚拟主机配置中设置(extra/httpd-vhost)
pool的open_basedir参数写错会导致整站无法访问
![](http://oshv1dmrx.bkt.clouddn.com/201708101512_506.png)
![](http://oshv1dmrx.bkt.clouddn.com/201708101547_43.png)
pm
dynamic 动态资源资源模式,根据使用情况自动调整,参数建议如上图
static 会直接生成最大进程数:pm.max_childen,spare参数不生效
pm.max_children //最大子进程数,可以查看,static模式会保持最大进程数
pm.start_servers //启动服务时会启动的进程数,根据服务状态进行调整
pm.min_spare_servers //定义在空闲时段,子进程数的最少数量,requests到达max会kill该children进程。杀超了min_spare线会派生新children
pm.max_spare_servers //定义在空闲时段,子进程数的最大值,如果高于这个数值就开始清理空闲的子进程。
pm.max_requests //定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。
据说因为php处理进程为轮询,设置requests过低容易同时max,导致网站502无法访问,所以建议request调大
12.22 php-fpm慢执行日志
12.23 open_basedir
12.24 php-fpm进程管理
12.21 php-fpm的pool
nginx可以定义多个虚拟主机的conf,同样的,php-fpm可以定义多个资源池子pool,用不同的socket监听,两个pool互不影响,相互隔离方法一:主配置文件增加,复制原有并修改即可
方法二:创建多个pool文件,放到下级目录
第一步:转移原有[www]pool并创建[axiang]pool
[root@axiang-02 ~]# cd /usr/local/php-fpm/etc [root@axiang-02 etc]# vim php-fpm.conf //打开用于复制粘贴,[crtl-z]放后台 [root@axiang-02 etc]# vim php-fpm.d/axiang.conf [root@axiang-02 etc]# cat !$ cat php-fpm.d/axiang.conf [axiang] listen = /tmp/axiang.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 [root@axiang-02 etc]# vim php-fpm.d/www.conf [root@axiang-02 etc]# cat !$ cat php-fpm.d/www.conf [www] listen = /tmp/php-fcgi.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 [root@axiang-02 etc]# cat php-fpm.conf [global] pid = /usr/local/php-fpm/var/run/php-fpm.pid error_log = /usr/local/php-fpm/var/log/php-fpm.log include = etc/php-fpm.d/*.conf //先复制粘贴好[www]的参数到新文件,最后删掉并改为include
第二步:通过axiang.sock,将nginx虚拟主机bbb.com的php请求,对接到php-fpm服务的[axiang]pool
[root@axiang-02 vhost]# cat bbb.conf server { listen 80 default_server; server_name bbb.com; index index.html index.htm index.php; root /data/wwwroot/bbb.com; #匹配php,调用php-fpm的服务 location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/axiang.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/wwwroot/bbb.com$fastcgi_script_name; } }
试用axiang.sock
![](http://oshv1dmrx.bkt.clouddn.com/201708061928_640.png)
12.22 php-fpm慢执行日志
当网站访问变慢了,分析php网站瓶颈,慢在哪里,slow-log非常好用。是nginx的看家本领选择nginx的aaa网站测试
[root@axiang-02 php-fpm]# cd /usr/local/nginx/conf/vhost/ [root@axiang-02 vhost]# cat aaa.conf
![](http://oshv1dmrx.bkt.clouddn.com/201708092114_349.png)
看到aaa.com网站在使用[www]pool
创建慢日志
[root@axiang-02 vhost]# cd /usr/local/php-fpm/ [root@axiang-02 php-fpm]# vim etc/php-fpm.d/www.conf 加入: request_slowlog_timeout = 1 slowlog = /usr/local/php-fpm/var/log/www-slow.log
![](http://oshv1dmrx.bkt.clouddn.com/201708092133_140.png)
在www池里加入下面两行,表示访问过程大于1秒则记录日志到哪里
[root@axiang-02 php-fpm]# sbin/php-fpm -t [root@axiang-02 php-fpm]# /etc/init.d/php-fpm reload [root@axiang-02 php-fpm]# ls /usr/local/php-fpm/var/log/www-slow.log /usr/local/php-fpm/var/log/www-slow.log //重启即可生成慢日志文件了,还没有内容
测试
[root@axiang-02 vhost]# vim /data/wwwroot/aaa.com/slow.php [root@axiang-02 vhost]# cat !$ <?php echo “test slow log”;sleep(2);echo “done“;?> //sleep命令可以拖时间 [root@axiang-02 vhost]# curl -x127.0.0.1:80 aaa.com/slow.php [root@axiang-02 vhost]# curl -x127.0.0.1:80 aaa.com/slow.php -I HTTP/1.1 500 Internal Server Error //慢日志不会报错,这里是别的问题
页面展示错误信息
慢日志并不会报错,打开php.ini的display_errors,就可以通过浏览器访问或curl看到问题在哪里[root@axiang-02 vhost]# vi /usr/local/php-fpm/etc/php.ini
![](http://oshv1dmrx.bkt.clouddn.com/201708092110_530.png)
[root@axiang-02 vhost]# /etc/init.d/php-fpm reload [root@axiang-02 vhost]# curl -x127.0.0.1:80 aaa.com/slow.php <b>Parse error</b>: syntax error, unexpected 'slow' (T_STRING), expecting ',' or ';' in <b>/data/wwwroot/aaa.com/slow.php</b> on line <b>2</b><br />看到是标点符号问题 [root@axiang-02 vhost]# vi /data/wwwroot/aaa.com/slow.php //修改好 [root@axiang-02 vhost]# curl -x127.0.0.1:80 aaa.com/slow.php test slow logdone[root@axiang-02 vhost]# //慢php执行成功 [root@axiang-02 vhost]# cat /usr/local/php-fpm/var/log/www-slow.log //查看慢日志 [09-Aug-2017 21:22:11] [pool www] pid 2843 script_filename = /data/wwwroot/aaa.com/slow.php [0x00007f1b483892d0] sleep() /data/wwwroot/aaa.com/slow.php:3 //会告诉你第三行的sleep执行慢了
虽然监听的是127.0.0.1:9000端口,curl -x192.168.83.138:80 aaa.com/slow.php命令依然可以生成慢日志,说明监听的ip及端口只是php与nginx通信的桥梁,与curl访问的ip及端口没有关系
12.23 open_basedir
可以在pool中指定,与apache的类似,用于限定pool服务的根目录范围。可以定义多个,用冒号分开pool中加入
php_admin_value[open_basedir]=/data/wwwroot/aaa.com:/tmp/
![](http://oshv1dmrx.bkt.clouddn.com/201708092200_973.png)
curl访问没有问题
[root@axiang-02 php-fpm]# curl -x192.168.83.138:80 aaa.com/slow.php test slow logdone
错误日志
关掉display_error(一般也不会让浏览器展示错误信息,注意用";"注释,否则会提示)开启错误日志
![](http://oshv1dmrx.bkt.clouddn.com/201708092208_216.png)
error_log 定义日志路径
![](http://oshv1dmrx.bkt.clouddn.com/201708092209_118.png)
error_reporting 定义日志记录范围
[root@axiang-02 php-fpm]# grep error_log /usr/local/php-fpm/etc/php.ini //检查错误日志路径 error_log = /usr/local/php-fpm/var/log/php_errors.log [root@axiang-02 php-fpm]# ls /usr/local/php-fpm/var/log/ php-fpm.log www-slow.log [root@axiang-02 php-fpm]# touch /usr/local/php-fpm/var/log/php_errors.log [root@axiang-02 php-fpm]# chmod 777 !$ chmod 777 /usr/local/php-fpm/var/log/php_errors.log //手动做出错误日志,给权限 [root@axiang-02 php-fpm]# sbin/php-fpm -t [root@axiang-02 php-fpm]# /etc/init.d/php-fpm restart
测试,将open_basedir的路径改错
![](http://oshv1dmrx.bkt.clouddn.com/201708092212_219.png)
[root@axiang-02 php-fpm]# !curl //测试 curl -x192.168.83.138:80 aaa.com/slow.php No input file specified. [root@axiang-02 php-fpm]# curl -x192.168.83.138:80 aaa.com/slow.php -I HTTP/1.1 404 Not Found [root@axiang-02 php-fpm]# tail /usr/local/php-fpm/var/log/php_errors.log [09-Aug-2017 14:18:07 UTC] PHP Deprecated: Comments starting with '#' are deprecated in Unknown on line 1 in Unknown on line 0 //要用分号 ; 注释 [09-Aug-2017 14:18:28 UTC] PHP Warning: Unknown: open_basedir restriction in effect. File(/data/wwwroot/aaa.com/slow.php) is not within the allowed path(s): (/data/wwwroot/abaa.com:/tmp/) in Unknown on line 0 [09-Aug-2017 14:18:28 UTC] PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
pool的open_basedir的作用是限定pool服务的网站根目录,并不限定网站。如果aaa.com与bbb.com都是用的/data/www/aaa.com则没问题。
apache的open_basedir,在虚拟主机配置中设置(extra/httpd-vhost)
pool的open_basedir参数写错会导致整站无法访问
12.24 php-fpm进程管理
pool的参数详解[root@axiang-02 php-fpm]# cat etc/php-fpm.d/axiang.conf ··· 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 [root@axiang-02 php-fpm]# vim etc/php-fpm.d/axiang.conf
![](http://oshv1dmrx.bkt.clouddn.com/201708101512_506.png)
[root@axiang-02 php-fpm]# /etc/init.d/php-fpm restart Gracefully shutting down php-fpm . done Starting php-fpm done [root@axiang-02 php-fpm]# ps aux |grep php-fpm root 2647 0.0 0.2 226680 5004 ?Ss 14:59 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf) php-fpm 2648 0.0 0.2 226620 4720 ?S14:59 0:00 php-fpm: pool axiang php-fpm 2649 0.0 0.2 226620 4720 ?S14:59 0:00 php-fpm: pool axiang php-fpm 2650 0.0 0.2 226620 4720 ?S14:59 0:00 php-fpm: pool axiang php-fpm 2651 0.0 0.2 226620 4720 ?S14:59 0:00 php-fpm: pool axiang php-fpm 2652 0.0 0.2 226620 4724 ?S14:59 0:00 php-fpm: pool axiang php-fpm 2653 0.0 0.2 226620 4724 ?S14:59 0:00 php-fpm: pool axiang php-fpm 2654 0.0 0.2 226620 4724 ?S14:59 0:00 php-fpm: pool axiang php-fpm 2655 0.0 0.2 226620 4724 ?S14:59 0:00 php-fpm: pool axiang php-fpm 2656 0.0 0.2 226668 4720 ?S14:59 0:00 php-fpm: pool www php-fpm 2657 0.0 0.2 226668 4720 ?S14:59 0:00 php-fpm: pool www ···
![](http://oshv1dmrx.bkt.clouddn.com/201708101547_43.png)
pm
dynamic 动态资源资源模式,根据使用情况自动调整,参数建议如上图
static 会直接生成最大进程数:pm.max_childen,spare参数不生效
pm.max_children //最大子进程数,可以查看,static模式会保持最大进程数
pm.start_servers //启动服务时会启动的进程数,根据服务状态进行调整
pm.min_spare_servers //定义在空闲时段,子进程数的最少数量,requests到达max会kill该children进程。杀超了min_spare线会派生新children
pm.max_spare_servers //定义在空闲时段,子进程数的最大值,如果高于这个数值就开始清理空闲的子进程。
pm.max_requests //定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。
据说因为php处理进程为轮询,设置requests过低容易同时max,导致网站502无法访问,所以建议request调大
相关文章推荐
- 12.21 php-fpm的pool12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理
- linux学习第四十八篇:php-fpm的pool,php-fpm慢执行日志,定义open_basedir,php-fpm进程管理
- php-fpm的pool、PHP慢执行日志、open_basedir、php-fpm进程管理
- 51.php-fpm的pool 慢日志 open_basedir 进程管理
- php-fpm的pool, php-fpm慢执行日志,open_basedir,php-fpm进程管理
- php-fpm的pool、慢执行日志、 open_basedir、 进程管理
- php-fpm的pool、慢执行日志、open_basedir、进程管理
- nginx代理,负载均衡,ssl,php-fpm的pool,慢执行日志,open_basedir,php-fpm进程管理
- php-fpm的pool、PHP慢执行日志、open_basedir、php-fpm进程管理
- php-fpm的pool,php-fpm慢执行日志,open_basedir,php-fpm进程管理
- php-fpm的pool、PHP慢执行日志、open_basedir、php-fpm进程管理
- LNMP架构 (6) 之 php-fpm的pool、慢执行日志、open_basedir、进程管理
- php-fpm的pool、php-fpm慢执行日志、open_basedir、php-fpm进程管理
- LNMP架构(php-fpm的pool、慢日志、open_basedir、php-fpm进程)
- 【LNMP】php-fpm的pool、php-fpm慢执行日志、php-fpm定义open_basedir和php-fpm进程管理
- LNMP架构(六)之php-fpm,慢执行日志,open_basedir,php-fpm进程管理
- php-fpm的pool、php-fpm慢执行日志、open_basedir、php-fpm进程管理
- 十三周二次课 2018.01.09 php-fpm的pool、php-fpm慢执行日志、open_basedir、php-fpm进程管理
- 12.21 php-fpm的pool;12.22 php-fpm慢执行日志;12.23 open_basedir;12.24 php-fpm进程管理
- linux的php-fpm的pool、慢执行日志、进程管理及open_basedir介绍