php-fpm的pool

Nginx可以配置多个主机,php-fpm也可以配置多个pool
配置多个pool可以隔离开各个网站,例如一个网站有问题,把PHP资源耗尽了,那其他网站和这个网站使用的是同一个pool 那也会受到影响,所以我们可以给每个站点都配置一个pool。网站报错502一般和PHP有关。

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

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

  1. [root@lnmp ~]# ps -ef |grep php
  2. root 24261 1 0 04:00 ? 00:00:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
  3. php-fpm 24262 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  4. php-fpm 24263 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  5. php-fpm 24264 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  6. php-fpm 24265 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  7. php-fpm 24266 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  8. php-fpm 24267 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  9. php-fpm 24268 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  10. php-fpm 24269 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  11. php-fpm 24270 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  12. php-fpm 24271 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  13. php-fpm 24272 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  14. php-fpm 24273 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  15. php-fpm 24274 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  16. php-fpm 24275 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  17. php-fpm 24276 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  18. php-fpm 24277 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  19. php-fpm 24278 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  20. php-fpm 24279 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  21. php-fpm 24280 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  22. php-fpm 24281 24261 0 04:00 ? 00:00:00 php-fpm: pool www
  23. root 30209 30190 0 08:19 pts/3 00:00:00 grep --color=auto php
  24. [root@lnmp ~]#
  25. /进入配置文件目录
  26. [root@lnmp ~]# cd /usr/local/php-fpm/etc/
  27. /添加一个pool123.com
  28. [root@lnmp etc]# vim php-fpm.conf
  29. [global]
  30. pid = /usr/local/php-fpm/var/run/php-fpm.pid
  31. error_log = /usr/local/php-fpm/var/log/php-fpm.log
  32. [www]
  33. listen = /tmp/php-fcgi.sock
  34. listen.mode = 666
  35. user = php-fpm
  36. group = php-fpm
  37. pm = dynamic
  38. pm.max_children = 50
  39. pm.start_servers = 20
  40. pm.min_spare_servers = 5
  41. pm.max_spare_servers = 35
  42. pm.max_requests = 500
  43. rlimit_files = 1024
  44. [123.com]
  45. listen = /tmp/123.sock
  46. listen.mode = 666
  47. user = php-fpm
  48. group = php-fpm
  49. pm = dynamic
  50. pm.max_children = 50
  51. pm.start_servers = 20
  52. pm.min_spare_servers = 5
  53. pm.max_spare_servers = 35
  54. pm.max_requests = 500
  55. rlimit_files = 1024
  56. /检查语法
  57. [root@lnmp etc]# /usr/local/php-fpm/sbin/php-fpm -t
  58. [07-Sep-2021 08:21:12] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
  59. /重启
  60. [root@lnmp etc]# /etc/init.d/php-fpm restart
  61. Gracefully shutting down php-fpm . done
  62. Starting php-fpm done
  63. [root@lnmp etc]#
  64. /看到多了新的pool
  65. [root@lnmp etc]# ps -aux |grep php
  66. root 30219 0.0 0.2 231952 5088 ? Ss 08:21 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
  67. php-fpm 30220 0.0 0.2 231892 4808 ? S 08:21 0:00 php-fpm: pool www
  68. php-fpm 30221 0.0 0.2 231892 4808 ? S 08:21 0:00 php-fpm: pool www
  69. php-fpm 30222 0.0 0.2 231892 4808 ? S 08:21 0:00 php-fpm: pool www
  70. php-fpm 30223 0.0 0.2 231892 4808 ? S 08:21 0:00 php-fpm: pool www
  71. php-fpm 30224 0.0 0.2 231892 4812 ? S 08:21 0:00 php-fpm: pool www
  72. php-fpm 30225 0.0 0.2 231892 4812 ? S 08:21 0:00 php-fpm: pool www
  73. php-fpm 30226 0.0 0.2 231892 4812 ? S 08:21 0:00 php-fpm: pool www
  74. php-fpm 30227 0.0 0.2 231892 4812 ? S 08:21 0:00 php-fpm: pool www
  75. php-fpm 30228 0.0 0.2 231892 4812 ? S 08:21 0:00 php-fpm: pool www
  76. php-fpm 30229 0.0 0.2 231892 4812 ? S 08:21 0:00 php-fpm: pool www
  77. php-fpm 30230 0.0 0.2 231892 4816 ? S 08:21 0:00 php-fpm: pool www
  78. php-fpm 30231 0.0 0.2 231892 4816 ? S 08:21 0:00 php-fpm: pool www
  79. php-fpm 30232 0.0 0.2 231892 4816 ? S 08:21 0:00 php-fpm: pool www
  80. php-fpm 30233 0.0 0.2 231892 4816 ? S 08:21 0:00 php-fpm: pool www
  81. php-fpm 30234 0.0 0.2 231892 4816 ? S 08:21 0:00 php-fpm: pool www
  82. php-fpm 30235 0.0 0.2 231892 4816 ? S 08:21 0:00 php-fpm: pool www
  83. php-fpm 30236 0.0 0.2 231892 4816 ? S 08:21 0:00 php-fpm: pool www
  84. php-fpm 30237 0.0 0.2 231892 4816 ? S 08:21 0:00 php-fpm: pool www
  85. php-fpm 30238 0.0 0.2 231892 4816 ? S 08:21 0:00 php-fpm: pool www
  86. php-fpm 30239 0.0 0.2 231892 4816 ? S 08:21 0:00 php-fpm: pool www
  87. php-fpm 30240 0.0 0.2 231892 4812 ? S 08:21 0:00 php-fpm: pool 123.com
  88. php-fpm 30241 0.0 0.2 231892 4812 ? S 08:21 0:00 php-fpm: pool 123.com
  89. php-fpm 30242 0.0 0.2 231892 4812 ? S 08:21 0:00 php-fpm: pool 123.com
  90. php-fpm 30243 0.0 0.2 231892 4812 ? S 08:21 0:00 php-fpm: pool 123.com
  91. php-fpm 30244 0.0 0.2 231892 4816 ? S 08:21 0:00 php-fpm: pool 123.com
  92. php-fpm 30245 0.0 0.2 231892 4816 ? S 08:21 0:00 php-fpm: pool 123.com
  93. php-fpm 30246 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  94. php-fpm 30247 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  95. php-fpm 30248 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  96. php-fpm 30249 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  97. php-fpm 30250 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  98. php-fpm 30251 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  99. php-fpm 30252 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  100. php-fpm 30253 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  101. php-fpm 30254 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  102. php-fpm 30255 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  103. php-fpm 30256 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  104. php-fpm 30257 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  105. php-fpm 30258 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  106. php-fpm 30259 0.0 0.2 231892 4820 ? S 08:21 0:00 php-fpm: pool 123.com
  107. root 30261 0.0 0.0 112824 984 pts/3 R+ 08:23 0:00 grep --color=auto php
  108. [root@lnmp etc]#
  109. [root@lnmp etc]# cd /usr/local/nginx/conf/vhost/
  110. [root@lnmp vhost]# vim default.conf
  111. server
  112. {
  113. listen 80 default_server;
  114. server_name aaa.com;
  115. index index.html index.htm index.php;
  116. root /data/nginx/default;
  117. location ~ \.php$ {
  118. include fastcgi_params;
  119. fastcgi_pass unix:/tmp/123.sock;
  120. fastcgi_index index.php;
  121. fastcgi_param SCRIPT_FILENAME /data/nginx/test.com$fastcgi_script_name;
  122. }
  123. }
  124. # fastcgi_pass unix:/tmp/123.sock; 主要就是修改这一行配置文件选择不同的pool。
  125. [root@lnmp vhost]# /usr/local/nginx/sbin/nginx -t
  126. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  127. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  128. [root@lnmp vhost]# /usr/local/nginx/sbin/nginx -s reload

配置拆分多个pool

在nginx.conf这个配置文件下有一行配置文件为 include vhost/*.conf; 他的作用为识别指定目录下以conf为结尾的配置文件,让每个站点为一个配置文件。

  1. /进入配置文件目录
  2. [root@lnmp vhost]# cd /usr/local/php-fpm/etc/
  3. # 加入一行include
  4. [root@lnmp etc]# vim php-fpm.conf
  5. [global]
  6. pid = /usr/local/php-fpm/var/run/php-fpm.pid
  7. error_log = /usr/local/php-fpm/var/log/php-fpm.log
  8. include = etc/php-fpm.d/*.conf
  9. /创建存放配置文件的目录
  10. [root@lnmp etc]# mkdir php-fpm.d
  11. [root@lnmp etc]# cd php-fpm.d/
  12. [root@lnmp php-fpm.d]# vim 123.conf
  13. [123.com]
  14. listen = /tmp/123.sock
  15. listen.mode = 666
  16. user = php-fpm
  17. group = php-fpm
  18. pm = dynamic
  19. pm.max_children = 50
  20. pm.start_servers = 20
  21. pm.min_spare_servers = 5
  22. pm.max_spare_servers = 35
  23. pm.max_requests = 500
  24. rlimit_files = 1024
  25. request_slowlog_timeout = 1
  26. slowlog = /usr/local/php-fpm/var/log/www-slow.log
  27. [root@lnmp php-fpm.d]# vim www.conf
  28. [www]
  29. listen = /tmp/php-fcgi.sock
  30. listen.mode = 666
  31. user = php-fpm
  32. group = php-fpm
  33. pm = dynamic
  34. pm.max_children = 50
  35. pm.start_servers = 20
  36. pm.min_spare_servers = 5
  37. pm.max_spare_servers = 35
  38. pm.max_requests = 500
  39. [root@lnmp php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
  40. [19-Aug-2021 07:40:02] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf
  41. test is successful
  42. /重启服务
  43. [root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart
  44. Gracefully shutting down php-fpm . done
  45. Starting php-fpm done
  46. /查看一下sock文件
  47. [root@lnmp php-fpm.d]# ls /tmp/*.sock
  48. /tmp/123.sock /tmp/mysql.sock /tmp/php-fcgi.sock
  49. [root@lnmp php-fpm.d]# ps -ef |grep php
  50. root 30282 1 0 08:30 ? 00:00:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
  51. php-fpm 30283 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  52. php-fpm 30284 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  53. php-fpm 30285 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  54. php-fpm 30286 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  55. php-fpm 30287 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  56. php-fpm 30288 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  57. php-fpm 30289 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  58. php-fpm 30290 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  59. php-fpm 30291 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  60. php-fpm 30292 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  61. php-fpm 30293 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  62. php-fpm 30294 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  63. php-fpm 30295 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  64. php-fpm 30296 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  65. php-fpm 30297 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  66. php-fpm 30298 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  67. php-fpm 30299 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  68. php-fpm 30300 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  69. php-fpm 30301 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  70. php-fpm 30302 30282 0 08:30 ? 00:00:00 php-fpm: pool 123.com
  71. php-fpm 30303 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  72. php-fpm 30304 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  73. php-fpm 30305 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  74. php-fpm 30306 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  75. php-fpm 30307 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  76. php-fpm 30308 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  77. php-fpm 30309 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  78. php-fpm 30310 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  79. php-fpm 30311 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  80. php-fpm 30312 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  81. php-fpm 30313 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  82. php-fpm 30314 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  83. php-fpm 30315 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  84. php-fpm 30316 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  85. php-fpm 30317 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  86. php-fpm 30318 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  87. php-fpm 30319 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  88. php-fpm 30320 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  89. php-fpm 30321 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  90. php-fpm 30322 30282 0 08:30 ? 00:00:00 php-fpm: pool www
  91. root 30325 30190 0 08:30 pts/3 00:00:00 grep --color=auto php
  92. [root@lnmp php-fpm.d]#

php-fpm查看慢执行日志

通过配置慢执行日志,可以让我们清晰的了解到PHP脚本在哪里执行时间长,可以定位到哪一行。

  1. /添加两行配置文件
  2. [root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
  3. request_slowlog_timeout = 1
  4. slowlog = /usr/local/php-fpm/var/log/www-slow.log
  5. [root@lnmp php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t
  6. [07-Sep-2021 08:32:31] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf
  7. test is successful
  8. [root@lnmp php-fpm.d]# vim /usr/local/nginx/conf/vhost/test.com.conf
  9. server
  10. {
  11. listen 80;
  12. server_name test.com;
  13. index index.html index.htm index.php;
  14. root /data/nginx/test.com;
  15. location ~ \.php$ {
  16. include fastcgi_params;
  17. fastcgi_pass unix:/tmp/php-fcgi.sock;
  18. fastcgi_index index.php;
  19. fastcgi_param SCRIPT_FILENAME /data/nginx/test.com$fastcgi_script_name;
  20. }
  21. }
  22. /重载PHP服务
  23. [root@lnmp php-fpm.d]# /etc/init.d/php-fpm reload
  24. Reload service php-fpm done
  25. /可以看到我们配置的路径已经多了一个
  26. [root@lnmp php-fpm.d]# ls /usr/local/php-fpm/var/log/
  27. php-fpm.log www-slow.log
  28. /现在的www-slow.log还是一个空文件。只会记录执行时间大于1s的日志
  29. [root@lnmp php-fpm.d]# cat /usr/local/php-fpm/var/log/www-slow.log

测试 写一个慢执行文件

  1. [root@lnmp php-fpm.d]# vim /data/nginx/test.com/sleep.php
  2. <?php
  3. echo "test slow log";
  4. sleep(2);
  5. echo "done";
  6. ?>
  7. 执行这个脚本的时候可以明显看到慢了一下。
  8. [root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php
  9. test slow logdone[root@lnmp php-fpm.d]#
  10. 可以看到日志多出一行。说哪个文件,第三行 sellp()问题。
  11. [root@lnmp php-fpm.d]# cat /usr/local/php-fpm/var/log/www-slow.log
  12. [07-Sep-2021 10:55:16] [pool 123.com] pid 30879
  13. script_filename = /data/nginx/test.com/sleep.php
  14. [0x00007fdbdc54d270] sleep() /data/nginx/test.com/sleep.php:3

php-fpm定义open_basedir

open_basedir目的就是安全,httpd可以针对每个虚拟机设置一个open_basedir
php-fpm同样也可以对不同的pool设置的不同的open_basedir

  1. 修改配置文件,特意配置为错误路径
  2. 添加一行配置文件,其中test.com的路径为错误路径
  3. [root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
  4. php_admin_value[open_basedir]=/data/nginx/wwwtest.com:/tmp/
  5. [root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart
  6. Gracefully shutting down php-fpm . done
  7. Starting php-fpm done
  8. /测试发现这些PHP文件都无法访问,就是因为php open_basedir做了限制。
  9. [root@lnmp php-fpm.d]# ls /data/nginx/test.com/
  10. 1.js 1.jss 2.jpg 2.js 3.php admin index.html sleep.php
  11. [root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
  12. HTTP/1.1 404 Not Found
  13. Server: nginx/1.17.8
  14. Date: Thu, 19 Aug 2021 02:51:12 GMT
  15. Content-Type: text/html; charset=UTF-8
  16. Connection: keep-alive
  17. X-Powered-By: PHP/5.6.30
  18. [root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
  19. HTTP/1.1 404 Not Found
  20. Server: nginx/1.17.8
  21. Date: Thu, 19 Aug 2021 02:51:45 GMT
  22. Content-Type: text/html; charset=UTF-8
  23. Connection: keep-alive
  24. X-Powered-By: PHP/5.6.30
  25. 把配置文件改为正确的
  26. 发现可以正常使用
  27. [root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
  28. php_admin_value[open_basedir]=/data/nginx/test.com:/tmp/
  29. [root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart
  30. Gracefully shutting down php-fpm . done
  31. Starting php-fpm done
  32. [root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
  33. HTTP/1.1 200 OK
  34. Server: nginx/1.17.8
  35. Date: Thu, 19 Aug 2021 02:57:52 GMT
  36. Content-Type: text/html; charset=UTF-8
  37. Connection: keep-alive
  38. X-Powered-By: PHP/5.6.30
  39. [root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
  40. HTTP/1.1 200 OK
  41. Server: nginx/1.17.8
  42. Date: Thu, 19 Aug 2021 02:58:00 GMT
  43. Content-Type: text/html; charset=UTF-8
  44. Connection: keep-alive
  45. X-Powered-By: PHP/5.6.30

配置错误日志

配置记录php执行错误的日志

  1. 配置
  2. [root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php.ini
  3. display_errors = Off
  4. log_errors = On
  5. error_log = /usr/local/php-fpm/var/log/php_error.log
  6. ;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
  7. error_reporting = E_ALL
  8. 再次将php的配置文件改错
  9. [root@lnmp php-fpm.d]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
  10. php_admin_value[open_basedir]=/data/nginx/wwwtest.com:/tmp/
  11. 这个日志文件不会自动生成,所以我们自己创建一个,并授权。
  12. [root@lnmp php-fpm.d]# touch /usr/local/php-fpm/var/log/php_error.log
  13. [root@lnmp php-fpm.d]# chmod 777 /usr/local/php-fpm/var/log/php_error.log
  14. [root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart
  15. [root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
  16. HTTP/1.1 404 Not Found
  17. Server: nginx/1.17.8
  18. Date: Thu, 19 Aug 2021 03:21:22 GMT
  19. Content-Type: text/html; charset=UTF-8
  20. Connection: keep-alive
  21. X-Powered-By: PHP/5.6.30
  22. [root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
  23. HTTP/1.1 404 Not Found
  24. Server: nginx/1.17.8
  25. Date: Thu, 19 Aug 2021 03:21:32 GMT
  26. Content-Type: text/html; charset=UTF-8
  27. Connection: keep-alive
  28. X-Powered-By: PHP/5.6.30
  29. [root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php
  30. No input file specified.
  31. 查看错误日志,显示open_basedir限制生效,目录不能访问
  32. [root@lnmp php-fpm.d]# cat /usr/local/php-fpm/var/log/php_error.log
  33. [07-Sep-2021 04:10:25 UTC] PHP Warning: Unknown: open_basedir restriction in effect. File(/data/nginx/test.com/3.php) is not within the allowed path(s): (/data/nginx/wwwtest.com:/tmp/) in Unknown on line 0
  34. [07-Sep-2021 04:10:25 UTC] PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
  35. [07-Sep-2021 04:10:45 UTC] PHP Warning: Unknown: open_basedir restriction in effect. File(/data/nginx/test.com/sleep.php) is not within the allowed path(s): (/data/nginx/wwwtest.com:/tmp/) in Unknown on line 0
  36. [07-Sep-2021 04:10:45 UTC] PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
  37. [07-Sep-2021 04:10:55 UTC] PHP Warning: Unknown: open_basedir restriction in effect. File(/data/nginx/test.com/sleep.php) is not within the allowed path(s): (/data/nginx/wwwtest.com:/tmp/) in Unknown on line 0
  38. [07-Sep-2021 04:10:55 UTC] PHP Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0
  39. [root@lnmp php-fpm.d]#
  40. 再次将配置文件修改回来
  41. [root@lnmp php-fpm.d]# cat /usr/local/php-fpm/etc/php-fpm.d/www.conf
  42. [www]
  43. listen = /tmp/php-fcgi.sock
  44. listen.mode = 666
  45. user = php-fpm
  46. group = php-fpm
  47. pm = dynamic
  48. pm.max_children = 50
  49. pm.start_servers = 20
  50. pm.min_spare_servers = 5
  51. pm.max_spare_servers = 35
  52. pm.max_requests = 500
  53. rlimit_files = 1024
  54. request_slowlog_timeout = 1
  55. slowlog = /usr/local/php-fpm/var/log/www-slow.log
  56. php_admin_value[open_basedir]=/data/nginx/test.com:/tmp/
  57. /重启服务,可以正常使用,也没有产生错误日志。
  58. [root@lnmp php-fpm.d]# /etc/init.d/php-fpm restart
  59. Gracefully shutting down php-fpm . done
  60. Starting php-fpm done
  61. [root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/sleep.php -I
  62. HTTP/1.1 200 OK
  63. Server: nginx/1.17.8
  64. Date: Thu, 19 Aug 2021 03:25:43 GMT
  65. Content-Type: text/html; charset=UTF-8
  66. Connection: keep-alive
  67. X-Powered-By: PHP/5.6.30
  68. [root@lnmp php-fpm.d]# curl -x127.0.0.1:80 test.com/3.php -I
  69. HTTP/1.1 200 OK
  70. Server: nginx/1.17.8
  71. Date: Thu, 19 Aug 2021 03:25:50 GMT
  72. Content-Type: text/html; charset=UTF-8
  73. Connection: keep-alive
  74. 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的子进程最多可以处理这么多请求,当达到这个数值时,它会自动退出。