php-fpm的pool、php-fpm慢执行日志、open_basedir、php-fpm进程管理

目录

一、php-fpm的pool
二、php-fpm慢执行日志
三、open_basedir
四、php-fpm进程管理

一、php-fpm的pool

和LAMP不同的是,在LNMP架构中,php-fpm作为独立的一个服务存在。
php-fpm的配置文件为/usr/local/php-fpm/etc/php-fpm.conf,它同样也支持
include语句,类似于nginx.conf里面的include。

Nignx可以配置多个虚拟主机,php-fpm同样也支持配置多个pool,每一个pool可以监听一个端口,也可以监听一个socket。

  • 查看php-fpm配置文件
[root@minglinux-01 ~] cd /usr/local/php-fpm/etc/
[root@minglinux-01 /usr/local/php-fpm/etc] ls
pear.conf  php-fpm.conf  php-fpm.conf.default  php.ini
[root@minglinux-01 /usr/local/php-fpm/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
[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
  • 修改php-fpm.conf文件增加pool
[root@minglinux-01 /usr/local/php-fpm/etc] vim php-fpm.conf

  1 [global]
  2 pid = /usr/local/php-fpm/var/run/php-fpm.pid
  3 error_log = /usr/local/php-fpm/var/log/php-fpm.log
  4 [www]
  5 listen = /tmp/php-fcgi.sock
  6 listen.mode = 666
  7 user = php-fpm
  8 group = php-fpm
  9 pm = dynamic
 10 pm.max_children = 50
 11 pm.start_servers = 20
 12 pm.min_spare_servers = 5
 13 pm.max_spare_servers = 35
 14 pm.max_requests = 500
 15 rlimit_files = 1024
 16    //增加以下内容
 17 [ming]
 18 listen = /tmp/ming.sock  //监听/tmp/www.sock
 19 listen.mode = 666
 20 user = php-fpm
 21 group = php-fpm
 22 pm = dynamic
 23 pm.max_children = 50
 24 pm.start_servers = 20
 25 pm.min_spare_servers = 5
 26 pm.max_spare_servers = 35
 27 pm.max_requests = 500
 28 rlimit_files = 1024
  • 测试
[root@minglinux-01 /usr/local/php-fpm/etc] /usr/local/php-fpm/sbin/php-fpm -t   //检查配置
[03-Dec-2018 21:01:56] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

[root@minglinux-01 /usr/local/php-fpm/etc] /etc/init.d/php-fpm reload 
Reload service php-fpm /etc/init.d/php-fpm: 第 142 行:kill: (876) - 没有那个进程
 done
[root@minglinux-01 /usr/local/php-fpm/etc] service php-fpm start
Starting php-fpm  done
[root@minglinux-01 /usr/local/php-fpm/etc] /etc/init.d/php-fpm reload //重载配置
Reload service php-fpm  done
[root@minglinux-01 /usr/local/php-fpm/etc] ps aux |grep php-fpm
root       5190  0.2  0.2 123752  4952 ?        Ss   21:02   0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm    5191  0.0  0.2 123692  4696 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5192  0.0  0.2 123692  4696 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5193  0.0  0.2 123692  4696 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5194  0.0  0.2 123692  4696 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5195  0.0  0.2 123692  4700 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5196  0.0  0.2 123692  4700 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5197  0.0  0.2 123692  4700 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5198  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5199  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5200  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5201  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5202  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5203  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5204  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5205  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5206  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5207  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5208  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5209  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5210  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool www
php-fpm    5211  0.0  0.2 123692  4700 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5212  0.0  0.2 123692  4700 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5213  0.0  0.2 123692  4700 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5214  0.0  0.2 123692  4704 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5215  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5216  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5217  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5218  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5219  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5220  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5221  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5222  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5223  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5224  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5225  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5226  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5227  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5228  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5229  0.0  0.2 123692  4708 ?        S    21:02   0:00 php-fpm: pool ming
php-fpm    5230  0.0  0.2 123692  4712 ?        S    21:02   0:00 php-fpm: pool ming
root       5232  0.0  0.0 112720   984 pts/1    R+   21:02   0:00 grep --color=auto php-fpm

可以看到php-fpm已经有www和ming两个pool了。这样就可以在Nginx不同的虚拟主机中调用不同的pool,从而达到相互隔离的目的,两个pool互不影响。

  • 指定虚拟主机中调用不同的pool
[root@minglinux-01 /usr/local/php-fpm/etc] cd /usr/local/nginx/conf/vhost/
[root@minglinux-01 /usr/local/nginx/conf/vhost] ls
aaa.com.conf  load.conf  proxy.conf  ssl.conf  test.com.conf
[root@minglinux-01 /usr/local/nginx/conf/vhost] vim test.com.conf 
···
 50     location ~ \.php$
 51     {
 52         include fastcgi_params;
 53         fastcgi_pass unix:/tmp/php-fcgi.sock; //这里监听的是www的socket地址
 54         fastcgi_index index.php;
 55         fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;
 56     }
···

[root@minglinux-01 /usr/local/nginx/conf/vhost] vim aaa.com.conf
···
  8       location ~ \.php$
  9       
 10        {
 11            include fastcgi_params;
 12            fastcgi_pass unix:/tmp/ming.sock  //这里监听的是ming的socket地址
 13            fastcgi_index index.php;
 14            fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name; 
15  
16        }
···

nginx有多个站点,若只有一个php的pool,当某个站点或某些站点将pool的资源耗尽,就会导致其他使用该pool的站点出现502错误。如果每个站点使用各自独立的pool就不会有这种问题。

  • php-fpm配置多个pool的另一种方式
[root@minglinux-01 /usr/local/nginx/conf/vhost] vim /usr/local/php-fpm/etc/php-fpm.conf
//php-fpm.conf改为如下形式
  1 [global]
  2 pid = /usr/local/php-fpm/var/run/php-fpm.pid
  3 error_log = /usr/local/php-fpm/var/log/php-fpm.log
  4 include = etc/php-fpm.d/*.conf

[root@minglinux-01 /usr/local/nginx/conf/vhost] cd /usr/local/php-fpm/etc/
[root@minglinux-01 /usr/local/php-fpm/etc] mkdir php-fpm.d
[root@minglinux-01 /usr/local/php-fpm/etc] cd php-fpm.d/

[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] vim www.conf
  1 [www]
  2 listen = /tmp/php-fcgi.sock
  3 listen.mode = 666
  4 user = php-fpm
  5 group = php-fpm
  6 pm = dynamic
  7 pm.max_children = 50
  8 pm.start_servers = 20
  9 pm.min_spare_servers = 5
 10 pm.max_spare_servers = 35
 11 pm.max_requests = 500
 12 rlimit_files = 1024

[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] vim ming.conf
  1 [ming]
  2 listen = /tmp/ming.sock 
  3 listen.mode = 666
  4 user = php-fpm
  5 group = php-fpm
  6 pm = dynamic
  7 pm.max_children = 50
  8 pm.start_servers = 20
  9 pm.min_spare_servers = 5
 10 pm.max_spare_servers = 35
 11 pm.max_requests = 500
 12 rlimit_files = 1024
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] /usr/local/php-fpm/sbin/php-fpm -t 
[03-Dec-2018 21:48:25] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] ps aux |grep php-fpm
root       5381  0.0  0.2 227372  4980 ?        Ss   21:49   0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm    5382  0.0  0.2 227312  4712 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5383  0.0  0.2 227312  4712 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5384  0.0  0.2 227312  4712 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5385  0.0  0.2 227312  4712 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5386  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5387  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5388  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5389  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5390  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5391  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5392  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5393  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5394  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5395  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5396  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5397  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5398  0.0  0.2 227312  4720 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5399  0.0  0.2 227312  4720 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5400  0.0  0.2 227312  4720 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5401  0.0  0.2 227312  4720 ?        S    21:49   0:00 php-fpm: pool ming
php-fpm    5402  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5403  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5404  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5405  0.0  0.2 227312  4716 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5406  0.0  0.2 227312  4720 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5407  0.0  0.2 227312  4720 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5408  0.0  0.2 227312  4720 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5409  0.0  0.2 227312  4720 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5410  0.0  0.2 227312  4720 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5411  0.0  0.2 227312  4720 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5412  0.0  0.2 227312  4720 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5413  0.0  0.2 227312  4720 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5414  0.0  0.2 227312  4724 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5415  0.0  0.2 227312  4724 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5416  0.0  0.2 227312  4724 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5417  0.0  0.2 227312  4724 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5418  0.0  0.2 227312  4724 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5419  0.0  0.2 227312  4724 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5420  0.0  0.2 227312  4724 ?        S    21:49   0:00 php-fpm: pool www
php-fpm    5421  0.0  0.2 227312  4724 ?        S    21:49   0:00 php-fpm: pool www
root       5423  0.0  0.0 112720   984 pts/1    S+   21:49   0:00 grep --color=auto php-fpm

二、php-fpm慢执行日志

php的网站,建议使用LNMP,当php网站运行慢时php-fpm的慢执行日志可以帮助快速地追踪到问题点。

  • 开启和查看php-fpm的慢执行日志
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] vim www.conf 
//再最后面增加如下两行内容
  1 [www]
  2 listen = /tmp/php-fcgi.sock
  3 listen.mode = 666
  4 user = php-fpm
  5 group = php-fpm
  6 pm = dynamic
  7 pm.max_children = 50
  8 pm.start_servers = 20
  9 pm.min_spare_servers = 5
 10 pm.max_spare_servers = 35
 11 pm.max_requests = 500
 12 rlimit_files = 1024
 13 request_slowlog_timeout = 1
 14 slowlog = /usr/local/php-fpm/var/log/www-slow.log

第一行定义超时时间,即PHP的脚本执行时间只要超过1秒就会记录日志,第二行定义慢执行日志的路径和名字。以后遇到PHP网站访问卡顿的问题时,要记得去查看这个慢执行日志。

  • 测试
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] /usr/local/php-fpm/sbin/php-fpm -t 
[03-Dec-2018 22:01:46] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] /etc/init.d/php-fpm reload 
Reload service php-fpm  done
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] ls /usr/local/php-fpm/var/log
php-fpm.log  www-slow.log
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] cat /usr/local/php-fpm/var/log/www-slow.log   //已生成的慢日志为空

[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] cat /usr/local/nginx/conf/vhost/test.com.conf

···
 50     location ~ \.php$
 51     {
 52         include fastcgi_params;
 53         fastcgi_pass unix:/tmp/php-fcgi.sock; //监听的是www的socket地址
 54         fastcgi_index index.php;
 55         fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;
 56     }
···
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] vim /data/wwwroot/test.com/sleep.php 
 //创建测试脚本如下

  1 <?php
  2 echo "test slow log";
  3 sleep(2);
  4 echo "\ndone\n";
  5 ?>

[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] curl -x127.0.0.1:80 test.com/sleep.php   //测试
test slow log
done
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] cat /usr/local/php-fpm/var/log/www-slow.log

[03-Dec-2018 22:15:34]  [pool www] pid 5482
script_filename = /data/wwwroot/test.com/sleep.php
[0x00007fde0e9d8298] sleep() /data/wwwroot/test.com/sleep.php:3 //具体到行

通过php-fpm的慢执行日志可以非常清晰地了解到PHP的脚本哪里执行时间长,它可以定位到具体的行。

三、open_basedir

当服务器上有多个网站时,不适合在php.ini文件中定义openbasedir,可以在虚拟主机配置文件中定义或在php-fpm中定义

httpd可以针对每个虚拟主机设置一个open_basedir,php-fpm同样也可以针对不同的pool设置不同的open_basedir。

[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] vim www.conf 

  1 [www]
  2 listen = /tmp/php-fcgi.sock
  3 listen.mode = 666
  4 user = php-fpm
  5 group = php-fpm
  6 pm = dynamic
  7 pm.max_children = 50
  8 pm.start_servers = 20
  9 pm.min_spare_servers = 5
 10 pm.max_spare_servers = 35
 11 pm.max_requests = 500
 12 rlimit_files = 1024
 13 request_slowlog_timeout = 1
 14 slowlog = /usr/local/php-fpm/var/log/www-slow.log
 15 php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/  //openbasedir路径定义不正确会无法访问
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Mon, 03 Dec 2018 14:50:43 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30

  • openbasedir路径定义错误
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] vim www.conf 

  1 [www]
  2 listen = /tmp/php-fcgi.sock
  3 listen.mode = 666
  4 user = php-fpm
  5 group = php-fpm
  6 pm = dynamic
  7 pm.max_children = 50
  8 pm.start_servers = 20
  9 pm.min_spare_servers = 5
 10 pm.max_spare_servers = 35
 11 pm.max_requests = 500
 12 rlimit_files = 1024
 13 request_slowlog_timeout = 1
 14 slowlog = /usr/local/php-fpm/var/log/www-slow.log
 15 php_admin_value[open_basedir]=/data/wwwroot/ming.com:/tmp/  //定义错误

[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] /etc/init.d/php-fpm reload 
Reload service php-fpm  done
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 404 Not Found
Server: nginx/1.12.2
Date: Mon, 03 Dec 2018 14:51:45 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30

  • php-fpm错误日志
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] vim /usr/local/php-fpm/etc/php.ini
···
106 error_reporting = E_ALL //定义错误日志级别
···
 466 display_errors = Off //Off浏览器不显示错误信息。错误信息不应显示再浏览器中,应保存到指定文件中
···
 487 log_errors = On //开启错误日志记录功能
···
575  error_log = /usr/local/php-fpm/var/log/php_errors.log //日志保存路径
···

[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] ls /usr/local/php-fpm/var/log/
php-fpm.log  www-slow.log
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] touch /usr/local/php-fpm/var/log/php_errors.log //手动创建错误日志文件
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] chmod 777 /usr/local/php-fpm/var/log/php_errors.log //修改较高权限以防错误日志写入不成功
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] !curl
curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 404 Not Found
Server: nginx/1.12.2
Date: Mon, 03 Dec 2018 15:09:59 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30

[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] cat /usr/local/php-fpm/var/log/php_errors.log
[03-Dec-2018 15:09:59 UTC] PHP Warning:  Unknown: open_basedir restriction in effect. File(/data/wwwroot/test.com/3.php) is not within the allowed path(s): (/data/wwwroot/ming.com:/tmp/) in Unknown on line 0
[03-Dec-2018 15:09:59 UTC] PHP Warning:  Unknown: failed to open stream: Operation not permitted in Unknown on line 0
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] vim www.conf 
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] !curl
curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Mon, 03 Dec 2018 15:17:49 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30

3.php文件在test.com路径下,而open_basedir路径限制在ming.com路径下,因此访问受限。将路径改正后即可访问成功。

四、php-fpm进程管理

[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] cat www.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
···

配置含义:

pm = dynamic定义php-fpm的子进程启动模式,dynamic为动态模式;一开始只启动少量的子进程,根据实际需求,动态地增加或者减少子进程,最多不会超过pm.max_children定义的数值。另外一种模式为static,这种模式下子进程数量由pm.max_children决定,一次性启动这么多,不会减少也不会增加。
pm.start_servers针对dynamic模式,它定义php-fpm服务在启动服务时产生的子进程数量。后期再根据访问量增加,如果服务器较空闲时也会自动销毁进程。
pm.min_spare_servers针对dynamic模式,它定义在空闲时段子进程数的最少数量。若php-fpm进程空闲就会销毁部分进程,但至少会保留5个子进程。
pm.max_spare_servers也是针对dynamic模式的,它定义在空闲时段子进程数的最大值,如果高于这个数值就开始清理空闲的子进程。
pm.max_requests针对dynamic模式,它定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程中最多可以处理这么多请求,当达到这个数值时,它会自动退出,再派生另外的子进程处理后续请求。

  • 修改配置文件
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] vim www.conf 
//修改了pm.start_servers = 5

···
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
···

[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] /etc/init.d/php-fpm reload 
Reload service php-fpm  done
[root@minglinux-01 /usr/local/php-fpm/etc/php-fpm.d] ps aux |grep php-fpm
root       5824  0.5  0.2 227372  4948 ?        Ss   23:39   0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm    5825  0.0  0.2 227312  4712 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5826  0.0  0.2 227312  4712 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5827  0.0  0.2 227312  4712 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5828  0.0  0.2 227312  4712 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5829  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5830  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5831  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5832  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5833  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5834  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5835  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5836  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5837  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5838  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5839  0.0  0.2 227312  4720 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5840  0.0  0.2 227312  4720 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5841  0.0  0.2 227312  4720 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5842  0.0  0.2 227312  4720 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5843  0.0  0.2 227312  4720 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5844  0.0  0.2 227312  4720 ?        S    23:39   0:00 php-fpm: pool ming
php-fpm    5845  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool www
php-fpm    5846  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool www
php-fpm    5847  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool www
php-fpm    5848  0.0  0.2 227312  4716 ?        S    23:39   0:00 php-fpm: pool www
php-fpm    5849  0.0  0.2 227312  4720 ?        S    23:39   0:00 php-fpm: pool www
root       5851  0.0  0.0 112720   980 pts/1    S+   23:39   0:00 grep --color=auto php-fpm

可以看到php-fpm服务在启动服务时产生的子进程数量变为了5个

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容

  • [toc] 在公司的网站上推荐使用 docker 容器来安装环境,一个项目一个 docker 容器。 、、 百度百...
    Mdvtrw阅读 1,485评论 0 1
  • [toc] 在公司的网站上推荐使用 docker 容器来安装环境,一个项目一个 docker 容器。 个人网站服务...
    Mdvtrw阅读 282评论 0 0
  • 在实际的开发和应用中偶发的502,504让人头痛,下面转发一个写的比较全面的。 PHP-fpm PHP-FPM是一...
    daos阅读 2,342评论 2 18
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 【睡眠小问题】[月亮] 一、半睡半醒:肝的问题,需要梳理肝,太冲、涌泉。 二、零晨3点易醒:肺气不足,需梳理太渊、...
    慢慢长大的蜗牛阅读 109评论 0 0