php-fpm的pool

php可以针对不同的网站分配不同的进程池,这些进程池在工作过程中互不干扰,如果一个进程池被资源耗尽,不会被影响到其他进程池的正常运行。pool的进程池也可以像nginx虚拟主机那样分别配置单独的配置文件,各个配置文件中的配置互不干扰,同时作用于不同的网站php解析

在php配置文件里配置多个进程池,只需要把配置复制一份拷贝到原文件的内容中即可,这两个php池名称不一致,启动时会以不同名称来启动进程,在配置文件中也以不同模块名来区分,重新加载php查看其新的进程池名称

[root@aaa php-fpm]# vim /usr/local/php-fpm/etc/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

[http]

listen = /tmp/aaa.com-fcgi.sock

#listen = 127.0.0.1:9000

listen.mode = 666

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 10

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

[www].

listen = /tmp/b.com-fcgi.sock

#listen = 127.0.0.1:9000

listen.mode = 666

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 10

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

[root@aaa ~]# /usr/local/php-fpm/sbin/php-fpm -t

[15-Aug-2018 22:31:16] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

查看php进程,我这里使用php原本的启动文件有问题,使用reload没有正常加载我的配置,之后结果直接把php进程全部给killall掉了,生产环境十分不建议这么做,因为会导致一部分数据丢失,启动后使用ps -aux差看php的进程

[root@aaa ~]# ps -aux |grep php

root 13250 0.0 0.4 227600 4872 ? Ss 22:30 0:00 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)

php-fpm 13251 0.0 0.4 227540 4656 ? S 22:30 0:00 php-fpm: pool http

php-fpm 13252 0.0 0.4 227540 4656 ? S 22:30 0:00 php-fpm: pool http

php-fpm 13253 0.0 0.4 227540 4660 ? S 22:30 0:00 php-fpm: pool http

php-fpm 13254 0.0 0.4 227540 4660 ? S 22:30 0:00 php-fpm: pool http

php-fpm 13255 0.0 0.4 227540 4664 ? S 22:30 0:00 php-fpm: pool http

php-fpm 13256 0.0 0.4 227540 4664 ? S 22:30 0:00 php-fpm: pool http

php-fpm 13257 0.0 0.4 227540 4664 ? S 22:30 0:00 php-fpm: pool http

php-fpm 13258 0.0 0.4 227540 4664 ? S 22:30 0:00 php-fpm: pool http

php-fpm 13259 0.0 0.4 227540 4664 ? S 22:30 0:00 php-fpm: pool http

php-fpm 13260 0.0 0.4 227540 4664 ? S 22:30 0:00 php-fpm: pool http

php-fpm 13261 0.0 0.4 227540 4660 ? S 22:30 0:00 php-fpm: pool www

php-fpm 13262 0.0 0.4 227540 4660 ? S 22:30 0:00 php-fpm: pool www

php-fpm 13263 0.0 0.4 227540 4660 ? S 22:30 0:00 php-fpm: pool www

php-fpm 13264 0.0 0.4 227540 4660 ? S 22:30 0:00 php-fpm: pool www

php-fpm 13265 0.0 0.4 227540 4664 ? S 22:30 0:00 php-fpm: pool www

php-fpm 13266 0.0 0.4 227540 4664 ? S 22:30 0:00 php-fpm: pool www

php-fpm 13267 0.0 0.4 227540 4664 ? S 22:30 0:00 php-fpm: pool www

php-fpm 13268 0.0 0.4 227540 4664 ? S 22:30 0:00 php-fpm: pool www

php-fpm 13269 0.0 0.4 227540 4668 ? S 22:30 0:00 php-fpm: pool www

php-fpm 13270 0.0 0.4 227540 4668 ? S 22:30 0:00 php-fpm: pool www

root 13283 0.0 0.0 112724 976 pts/0 R+ 22:32 0:00 grep --color=auto php

把php进程池分别写入多个文件中进行配置,这个需要在主配置文件中加入include这行配置,然后再include指定的目录下编辑子配置文件

[root@aaa php-fpm]# vim /usr/local/php-fpm/etc/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 = /usr/local/php-fpm/etc/php-fpm/*.conf

在/usr/local/php-fpm/etc/php-fpm/这个目录下创建子配置文件,为了方便区分,使用网站域名相关字符来命名配置文件。/usr/local/php-fpm/etc/php-fpm/的php-fpm这个目录默认不存在,需要我们手动创建,然后在其下面写入子配置文件,配置文件中如果全部使用sock通信方式的话,需要将不同主机的php指定为不同名称的sock文件,这样做是为了方便区分

进入 /usr/local/php-fpm/etc/php-fpm/目录。写入不同主机的php配置文件模块

[root@aaa ~]# mkdir /usr/local/php-fpm/etc/php-fpm/

[root@aaa ~]# vim /usr/local/php-fpm/etc/php-fpm/

[root@aaa php-fpm]# ls

aaa.conf b.conf

[root@aaa php-fpm]# cat aaa.conf

[http]

listen = /tmp/aaa.com-fcgi.sock

#listen = 127.0.0.1:9000

listen.mode = 666

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 10

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

[root@aaa php-fpm]# vim b.conf

[www]

listen = /tmp/b.com-fcgi.sock

#listen = 127.0.0.1:9000

listen.mode = 666

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 10

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

检查配置文件的内容,确认无误后重新加载配置

[root@aaa ~]# /usr/local/php-fpm/sbin/php-fpm -t

[15-Aug-2018 22:31:16] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

[root@aaa php-fpm]# /etc/init.d/php-fpm reload

Reload service php-fpm  done

配置完php-fpm后,还要将nginx主机中的配置文件改为对应的sock文件,这样nginx才能找到正确的php sock文件,才能够正常提供服务

[root@aaa nginx]# vim /usr/local/nginx/conf/vhost/aaa.conf

location ~ \.php$         -----添加配置时注意网站根目录和sock文件目录

{

include fastcgi_params;

fastcgi_pass unix:/tmp/aaa.com-fcgi.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /data/wwwroot/aaa$fastcgi_script_name;

}

[root@aaa nginx]# vim /usr/local/nginx/conf/vhost/aaa.conf

location ~ \.php$           -----添加配置时注意网站根目录和sock文件目录

{

include fastcgi_params;

fastcgi_pass unix:/tmp/b.com-fcgi.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /data/wwwroot/b$fastcgi_script_name;

}

php-fpm慢执行日志

php配置文件中提供php慢执行的日志记录,默认是不记录慢日志的。默认日志都是存在/usr/local/php-fpm/var/log/这个路径下的,配置单独的主机日志文件的话,会在该目录下以自定义名称来创建和记录日志的,参考的配置如下

以aaa.com这个的主机配置为例,配置以单独的文件创建,具体参考上一节内容

[root@aaa php-fpm]# cat aaa.conf

[http]

listen = /tmp/aaa.com-fcgi.sock

#listen = 127.0.0.1:9000

listen.mode = 666

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 10

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

request_slowlog_timeout = 2                                         判定执行多长时间为慢执行的语句,单位秒

slowlog = /usr/local/php-fpm/var/log/aaa-slow.log         添加慢日志的保存路径

[root@aaa php-fpm]# /usr/local/php-fpm/sbin/php-fpm -t

```

检查配置是否正确

创建测试的循环语句来测试慢日志的记录信息

[root@aaa b]# vim sleep.php

ehco "test slow log";

sleep(2);

echo "done";

?>

[root@aaa b]# curl -x127.0.0.1:80 b.com/sleep.php

open_bashdir

open_bashdir是限制网站目录不可做越目录访问,如果多个虚拟主机的网站,其中一个网站被×××黑入,其他的网站不一定会被×××知道

跟Apache中的admin_value open_bashdir 配置是相同的意思,假如一个虚拟主机的目录被非法访问,那么此配置可以限制该访问被限制在此目录下不能跳跃到其他目录,需要在httpd虚拟主机配置文件中定义不同的目录,tmp是一个临时保存的目录,如果限制了tmp目录,那么网站上传图片时连临时文件都无法写入,这样的话会无法存储图片等文件的

在php的独立配置文件里加入open_bashdir的配置,指定网站网页的根路径进行限制,php_admin_value中定义网站文件存放的路径,这里以b.com进行测试

[root@aaa php-fpm]# vim b.conf

[www]

listen = /tmp/b.com-fcgi.sock

php_admin_value[open_bashdir]=/data/wwwroo/b/:/tmp/

编辑php.ini文件记录日志,reporting定义日志记录级别,error_log让php把错误日志记录在文件里

error_reporting = E_ALL

error_log = /usr/log/php-fpm/var/log/php_errors.log

测试错误的访问,改动php_admin_value[open_bashdir]的网站根路径

将路径修改为错误的bbbb路径,然后访问并查看日志内容

[root@aaa php-fpm]# vim b.conf

php_admin_value[open_bashdir]=/data/wwwroo/bbbb/:/tmp/

~

php-fpm进程管理

php-fpm配置中的参数,dynamic的动态模式,动态分配php的运行进程,在dynamic下配置进程的默认启动数或最低/最高的数量,

下面是php配置文件中的参数,内容简述有配置详解

[www]

listen = /tmp/b.com-fcgi.sock

#listen = 127.0.0.1:9000

listen.mode = 666

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 10

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

request_slowlog_timeout = 2

slowlog = /usr/local/php-fpm/var/log/aaa-slow.log

request_slowlog_timeout = 2

slowlog = /usr/local/php-fpm/var/log/b-slow.log

php_admin_value[open_bashdir]=/data/wwwroot/wwbb:/tmp/

pm = dynamic =   dynamic动态经常管理,设置为static后,配置文件中的这个pool里只会有pm.max_children会生效

pm.max_children =  50 设置最大子进程数,php处理请求时子进程最大只可以达到这个数量,不会超过这个数,使用ps 加wc统计查看进程数量

pm.start_servers =  10 服务启动时立即打开的子进程数量,也就是php在启动时默认打开的进程数量

pm.min_spare_servers = 5 在空闲时段,子进程最少数量,如果要到达这个值,php-fpm则会产生新的子进程

pm.max_spare_servers = 35 在空闲时段,子进程数的最大值,如果大于这个值,则会开始清理掉空闲的子进程

pm.max_requests = 500 定义一个子进程处理请求的最大数,如果php-fpm的某个子进程在处理指定的500个请求后,该子进程不会再处理数据请求并会自动退出

rlimit_files = 1024   master进程最大打开的文件数量

php任务进程中的配置文件_php-fpm配置多进程池运行相关推荐

  1. php任务进程中的配置文件_PHP进程管理器php-fpm配置说明

    php-fpm是什么 php-fpm是PHP的一个进程管理器.php下面的众多work进程皆有php-fpm进程管理器管理.具体可参考:http://www.qqdeveloper.com/20... ...

  2. 【Android 逆向】Android 进程注入工具开发 ( 调试进程中寄存器的作用 | 通过 EIP 寄存器控制程序运行 | EIP 寄存器的存档与恢复 )

    文章目录 一.调试进程中寄存器的作用 二.通过 EIP 寄存器控制程序运行 三.EIP 寄存器的存档与恢复 一.调试进程中寄存器的作用 内存是一个线性结构 , 将动态库加载到内存中后 , 每个动态库文 ...

  3. Spring idea中spring配置文件自动检查配置应用程序上下文的操作

    IDEA中 Spring配置文件默认会被检查是否配置应用程序上下文 idea中默认会自动检查是否配置上下文 1.点击蓝色字体 2.点击创建新的应用程序上下文 3.点击确定就配置完成了 但是!开始不知道 ...

  4. Linux环境中Visual Studio Code的配置使用----编译运行C/C++(良心教程)

    之前的博文分享了下载安装[VS code]的详细教程, 有需要速戳–>Linux环境中Visual Studio Code 安装配置及其卸载(详细教程) 本篇博文分享本人初次使用[VS code ...

  5. Python中的配置文件

    目录 你甚至需要配置文件吗? 为什么要配置文件? Microsoft.NET与Python配置文件 入门 先决条件 创建配置文件 启动VS Code并创建一个main.py文件 从硬编码开始 运行代码 ...

  6. Linux环境中Visual Studio Code 安装配置及其卸载(详细教程)

    两篇相关博文: 在VMware15中创建虚拟机安装ubuntu系统(超详细教程) Linux环境编译运行C/C++语言程序----配置gcc.g++(详细教程) 此篇分享我在linux环境下安装VS ...

  7. CDH中yarn的动态资源池配置

    CDH中yarn的动态资源池的相关配置 一.CDH Yarn资源队列划分管理 场景:根据不同项目或不同用户,对yarn资源队列进行划分,达到资源管控,任务管控的目的CDH版本:6.2.0 1.1配置 ...

  8. linux my.cnf基本参数,Linux中MySQL配置文件my.cnf参数说明

    MySQL参数优化这东西不好好研究还是比较难懂的,其实不光是MySQL,大部分程序的参数优化,是很复杂的.MySQL的参数优化也不例外,对于不同的需求,还有硬件的配置,优化不可能又最优选择,只能慢慢的 ...

  9. linux配置apache不管用,Linux中apache配置文件详解

    Linux中apache配置文件:/etc/httpd/conf/httpd.conf ServerTokens OS//当服务器响应主机头(header)信息时显示Apache的版本和操作系统名称 ...

最新文章

  1. 史上最大规模 DDoS 攻击,每秒 1720 万次 HTTP 请求
  2. 解决w: pt/sources.list:18 中被配置了多次
  3. 【Python】for 循环次数
  4. jquery复选框组清空选中的值_jquery操作复选框(checkbox)的12个小技巧总结
  5. 多媒体微型计算机必不可少的硬件,第1章计算机基础知识习题材料.doc
  6. [ARM]【编译】【实践】 - 浮点编译选项NEON引发的Skia的库Illegal instruction运行错误和解决办法
  7. Linux下的wc命令
  8. Spring3之InternalResourceViewResolver
  9. Unity IOS 软键盘输入框问题
  10. java retainall_Java Set retainAll()用法及代码示例
  11. html form回调函数,js 中的submit 回调函数
  12. 发生异常: ModuleNotFoundError No module named ‘XXXX‘可优先尝试的解决方式
  13. 类似igoogle div拖拽 demo
  14. 数据库基础技巧及用法
  15. 支付宝企业付款PHP版本(转账到支付宝账户)
  16. MyBatis 的级联查询
  17. 最强Python编程神器,真香!
  18. 拿番茄炒鸡蛋来讲解一下大数据项目的流程
  19. 【基于可见光定位的智能超市购物车系统】(四)可见光定位、电机驱动与整车设计
  20. 无限恐怖大逃杀服务器链接失败,为什么吃鸡游戏买钥匙老是连接错误 | 手游网游页游攻略大全...

热门文章

  1. 阿里云服务操作指南-个人购买版
  2. 即时通讯/聊天源码/聊天APP/im/PC/H5/安卓/苹果/开源
  3. H5页面适配iphoneX底部小黑条遮盖内容
  4. 社招面试如何准备,java程序员学习中各个阶段的建议
  5. c#设置图片的dpi_C#更改上传图像的dpi
  6. 超氧化物歧化酶(SOD)检测试剂盒测试过的干扰物质介绍
  7. 【深度学习】Subword Tokenization算法
  8. 今日头条app数据包分析
  9. RAC+DG架构部署(使用备份集)
  10. 《Adobe InDesign CS6中文版经典教程》—第1课1.2节工作区简介