给不同的站点分别配置不同的pool

  1. [root@lnmp ~]# ps -ef |grep php
  2. root 3028 3008 0 08:31 pts/3 00:00:00 grep --color=auto php
  3. root 127593 1 0 05:05 ? 00:00:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
  4. php-fpm 127594 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  5. php-fpm 127595 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  6. php-fpm 127596 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  7. php-fpm 127597 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  8. php-fpm 127598 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  9. php-fpm 127599 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  10. php-fpm 127600 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  11. php-fpm 127601 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  12. php-fpm 127602 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  13. php-fpm 127603 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  14. php-fpm 127604 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  15. php-fpm 127605 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  16. php-fpm 127606 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  17. php-fpm 127607 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  18. php-fpm 127608 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  19. php-fpm 127609 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  20. php-fpm 127610 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  21. php-fpm 127611 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  22. php-fpm 127612 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  23. php-fpm 127613 127593 0 05:05 ? 00:00:00 php-fpm: pool www
  24. # 进入配置文件目录
  25. [root@lnmp ~]# cd /usr/local/php-fpm/etc/
  26. # 添加一个pool为123.com
  27. [root@lnmp etc]# vim php-fpm.conf
  28. [global]
  29. pid = /usr/local/php-fpm/var/run/php-fpm.pid
  30. error_log = /usr/local/php-fpm/var/log/php-fpm.log
  31. [www]
  32. listen = /tmp/php-fcgi.sock
  33. listen.mode = 666
  34. user = php-fpm
  35. group = php-fpm
  36. pm = dynamic
  37. pm.max_children = 50
  38. pm.start_servers = 20
  39. pm.min_spare_servers = 5
  40. pm.max_spare_servers = 35
  41. pm.max_requests = 500
  42. rlimit_files = 1024
  43. [123.com]
  44. listen = /tmp/123.sock
  45. listen.mode = 666
  46. user = php-fpm
  47. group = php-fpm
  48. pm = dynamic
  49. pm.max_children = 50
  50. pm.start_servers = 20
  51. pm.min_spare_servers = 5
  52. pm.max_spare_servers = 35
  53. pm.max_requests = 500
  54. rlimit_files = 1024
  55. # 检查语法
  56. [root@lnmp etc]# /usr/local/php-fpm/sbin/php-fpm -t
  57. [07-Sep-2021 08:34:26] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
  58. # 重启
  59. [root@lnmp etc]# /etc/init.d/php-fpm restart
  60. Gracefully shutting down php-fpm . done
  61. Starting php-fpm done
  62. # 多了新的pool
  63. [root@lnmp etc]# ps -aux |grep php
  64. root 3040 0.0 0.5 231952 5088 ? Ss 08:35 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
  65. php-fpm 3041 0.0 0.4 231892 4804 ? S 08:35 0:00 php-fpm: pool www
  66. php-fpm 3042 0.0 0.4 231892 4804 ? S 08:35 0:00 php-fpm: pool www
  67. php-fpm 3043 0.0 0.4 231892 4804 ? S 08:35 0:00 php-fpm: pool www
  68. php-fpm 3044 0.0 0.4 231892 4804 ? S 08:35 0:00 php-fpm: pool www
  69. php-fpm 3045 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool www
  70. php-fpm 3046 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool www
  71. php-fpm 3047 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool www
  72. php-fpm 3048 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool www
  73. php-fpm 3049 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool www
  74. php-fpm 3050 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool www
  75. php-fpm 3051 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
  76. php-fpm 3052 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
  77. php-fpm 3053 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
  78. php-fpm 3054 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
  79. php-fpm 3055 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
  80. php-fpm 3056 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
  81. php-fpm 3057 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
  82. php-fpm 3058 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
  83. php-fpm 3059 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
  84. php-fpm 3060 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool www
  85. php-fpm 3061 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool 123.com
  86. php-fpm 3062 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool 123.com
  87. php-fpm 3063 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool 123.com
  88. php-fpm 3064 0.0 0.4 231892 4808 ? S 08:35 0:00 php-fpm: pool 123.com
  89. php-fpm 3065 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool 123.com
  90. php-fpm 3066 0.0 0.4 231892 4812 ? S 08:35 0:00 php-fpm: pool 123.com
  91. php-fpm 3067 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  92. php-fpm 3068 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  93. php-fpm 3069 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  94. php-fpm 3070 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  95. php-fpm 3071 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  96. php-fpm 3072 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  97. php-fpm 3073 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  98. php-fpm 3074 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  99. php-fpm 3075 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  100. php-fpm 3076 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  101. php-fpm 3077 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  102. php-fpm 3078 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  103. php-fpm 3079 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  104. php-fpm 3080 0.0 0.4 231892 4816 ? S 08:35 0:00 php-fpm: pool 123.com
  105. root 3082 0.0 0.0 112824 980 pts/3 R+ 08:35 0:00 grep --color=auto php
  106. [root@lnmp etc]# cd /usr/local/nginx/conf/vhost/
  107. [root@lnmp vhost]# vim default.conf
  108. server
  109. {
  110. listen 80 default_server;
  111. server_name aaa.com;
  112. index index.html index.htm index.php;
  113. root /data/nginx/default;
  114. location ~ \.php$ {
  115. include fastcgi_params;
  116. fastcgi_pass unix:/tmp/123.sock;
  117. fastcgi_index index.php;
  118. fastcgi_param SCRIPT_FILENAME /data/nginx/test.com$fastcgi_script_name;
  119. }
  120. }
  121. [root@lnmp vhost]# /usr/local/nginx/sbin/nginx -t
  122. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  123. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

配置拆分多个pool

[root@lnmp ~]# cd  /usr/local/php-fpm/etc/
[root@lnmp etc]# vim 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    //添加这个
[root@lnmp php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
[07-Sep-2021 09:52:22] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm .
 done
Starting php-fpm  done
[root@lnmp php-fpm.d]# ls /tmp/*.sock
/tmp/123.sock  /tmp/mysql.sock  /tmp/php-fcgi.sock
[root@lnmp php-fpm.d]# ps -ef |grep php
root       8265      1  0 09:52 ?        00:00:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm    8266   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8267   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8268   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8269   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8270   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8271   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8272   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8273   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8274   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8275   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8276   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8277   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8278   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8279   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8280   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8281   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8282   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8283   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8284   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8285   8265  0 09:52 ?        00:00:00 php-fpm: pool 123.com
php-fpm    8286   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8287   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8288   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8289   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8290   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8291   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8292   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8293   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8294   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8295   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8296   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8297   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8298   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8299   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8300   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8301   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8302   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8303   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8304   8265  0 09:52 ?        00:00:00 php-fpm: pool www
php-fpm    8305   8265  0 09:52 ?        00:00:00 php-fpm: pool www
root       8309   3099  0 09:53 pts/1    00:00:00 grep --color=auto php

php-fpm查看慢执行日志

[root@lnmp php-fpm.d]#  /usr/local/php-fpm/sbin/php-fpm -t
[07-Sep-2021 09:54:29] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

[root@lnmp php-fpm.d]# /etc/init.d/php-fpm reload
Reload service php-fpm  done
# 测试 写一个慢执行文件
[root@lnmp php-fpm.d]# ls /usr/local/php-fpm/var/log/
php-fpm.log  www-slow.log
[root@lnmp php-fpm.d]# vim  /data/nginx/test.com/sleep.php
<?php
echo "test slow log";
sleep(2);
echo "done";
?>
# 执行这个脚本的时候可以明显看到慢了一下。
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php
test slow logdone
[root@lnmp php-fpm.d]# cat /usr/local/php-fpm/var/log/www-slow.log 

[07-Sep-2021 09:56:13]  [pool www] pid 8353
script_filename = /data/nginx/test.com/sleep.php
[0x00007fe5caf40288] sleep() /data/nginx/test.com/sleep.php:3

php-fpm定义open_basedir

# 修改配置文件,特意配置为错误路径
[root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
php_admin_value[open_basedir]=/data/nginx/wwwtest.com:/tmp/         //添加
[root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
# 测试发现这些PHP文件都无法访问,就是因为php open_basedir做了限制。
[root@lnmp php-fpm.d]# ls /data/nginx/test.com/
1.js  1.jss  2.jpg  3.php  admin  index.html  sleep.php
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
HTTP/1.1 404 Not Found
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:03:17 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
[root@lnmp php-fpm.d]#   curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 404 Not Found
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:03:48 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30
# 把配置文件改为正确的
[root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
php_admin_value[open_basedir]=/data/nginx/test.com:/tmp/      //修改刚刚添加的
[root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart 
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:06:03 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30

[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:06:25 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30

配置错误日志

# 配置 
[root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php.ini 
# 查找以下修改,至=
display_errors = Off
log_errors = On
error_log = /usr/local/php-fpm/var/log/php_error.log
;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
error_reporting = E_ALL
# 再次将php的配置文件改错
[root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf 
php_admin_value[open_basedir]=/data/nginx/wwwtest.com:/tmp/
# 这个日志文件不会自动生成,所以我们自己创建一个,并授权
[root@lnmp php-fpm.d]# touch /usr/local/php-fpm/var/log/php_error.log
[root@lnmp php-fpm.d]# chmod 777 /usr/local/php-fpm/var/log/php_error.log
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:17:24 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30

[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:17:53 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30


[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php 
test slow logdone

# 查看错误日志,显示open_basedir限制生效,目录不能访问
cat /usr/local/php-fpm/var/log/php_error.log 

# 再次将配置文件修改回来
[root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf 
php_admin_value[open_basedir]=/data/nginx/test.com:/tmp/
[root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:20:45 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30

[root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
HTTP/1.1 200 OK
Server: nginx/1.17.8
Date: Tue, 07 Sep 2021 02:21:01 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/5.6.30

php-fpm进程管理

pm = dynamic //动态进程管理,也可以是static 如果是静态的,会直接启动最大子进程数
pm.max_children = 50 //最大子进程数,ps aux可以查看
pm.start_servers = 20 //启动服务时会启动的进程数
pm.min_spare_servers = 5 //定义在空闲时段,子进程数的最少数量,如果达到这个数值时,php-fpm服务会自动派生新的子进程。
pm.max_spare_servers = 35 //定义在空闲时段,子进程数的最大值,如果高于这个数值就开始清理空闲的子进程。
pm.max_requests = 500 //定义一个子进程最多处理的请求数,也就是说在一个php-fpm的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。