6月13日任务

12.21 php-fpm的pool
12.22 php-fpm慢执行日志
12.23 open_basedir
12.24 php-fpm进程管理

12.21 php-fpm的pool

php-fpm可以支持定义多个pool,分别监听不同的sock或IP和端口,比如Nginx有好几个站点,每一个站点都可以去使用一个pool,这样的好处是当其中一个php页面502了,这很有可能是资源不够了,如果所有的网站都使用了一个pool,其中一个网站发了一些故障,例如程序员写的程序有问题,就会把php资源耗尽,那么其他的站点也会502,所以有必要把每一个站点隔离开,每一个站点使用单独的pool。

添加多个pool的方法:

1、进入指定目录,编辑php-fpm.conf文件。

[root@jimmylinux- ~]# cd /usr/local/php-fpm/etc/  进入指定目录

[root@jimmylinux- etc]# ls
pear.conf php-fpm.conf php-fpm.conf.default php.ini [root@jimmylinux- etc]# vim php-fpm.conf 编辑配置文件 添加以下内容 [jimmy]
listen = /tmp/jimmy.sock
#listen = 127.0.0.1:
listen.mode =
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children =
pm.start_servers =
pm.min_spare_servers =
pm.max_spare_servers =
pm.max_requests =
rlimit_files =

2、-t检查语法是否正确,然后重启php-fpm或者重新加载。

[root@jimmylinux- etc]# /usr/local/nginx/sbin/nginx -t  检查语法是否正确
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@jimmylinux- etc]# /etc/init.d/php-fpm reload 重新加载php-fpm
Reload service php-fpm done [root@jimmylinux- etc]# ps aux |grep php-fpm 查看pool信息

3、如何去使用自定义的pool

[root@jimmylinux- etc]# cd /usr/local/nginx/conf/vhost/

[root@jimmylinux- vhost]# ls
aaa.com.conf ld.conf proxy.conf ssl.conf test.com.conf [root@jimmylinux- vhost]# vim test.com.conf 可以把test.com.conf定义成php-fcgi.sock [root@jimmylinux- vhost]# vim aaa.com.conf 再把aaa.com.conf定义成jimmy.sock

假如现在test.com.conf请求量很大,最终把php-fpm(www的pool进程耗尽了)最多可以启动50个,当50个启动完后所有的都在忙,又有新的请求来的时候就会把502,因为没有多的php-fpm进程提供服务了,而另外的站点不受影响,因为使用的是另外的pool,这就是为什么要定义多个pool的原因。

在Nginx.conf里面加了一条include,那php-fpm也是同样支持加include的。

[root@jimmylinux- vhost]# cd /usr/local/php-fpm/etc/

[root@jimmylinux- etc]# ls
pear.conf php-fpm.conf php-fpm.conf.default php.ini [root@jimmylinux- etc]# vim php-fpm.conf 在php-fpm.conf 主配置文件中也同样支持添加include

在global里面加入include,其他的内容都删除掉。

创建目录,然后新建配置文件。

[root@jimmylinux- etc]# mkdir php-fpm.d  创建目录

[root@jimmylinux- etc]# cd php-fpm.d

[root@jimmylinux- php-fpm.d]# vim www.conf  新建配置文件

添加以下内容

[www]
listen = /tmp/php-fcgi.sock
#listen = 127.0.0.1:
listen.mode =
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children =
pm.start_servers =
pm.min_spare_servers =
pm.max_spare_servers =
pm.max_requests =
rlimit_files = 1024
[root@jimmylinux-001 php-fpm.d]# vim jimmy.conf  重新创建另一个配置文件

添加以下内容

[jimmy]
listen = /tmp/jimmy.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 = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024
 

-t检查语法是否正确,然后重启php-fpm。

[root@jimmylinux- php-fpm.d]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@jimmylinux- php-fpm.d]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm done

12.22 php-fpm慢执行日志

做PHP网站,建议使用LNMP,其中有一个原因就是可以去分析php-fpm慢执行日志,比如网站访问慢,具体什么原因到底慢在什么地方,所以慢执行日志是非常有用的。

1、进入指定目录,编辑www.conf配置文件。

[root@jimmylinux- ~]# cd /usr/local/php-fpm/etc/php-fpm.d/

[root@jimmylinux- php-fpm.d]# vim www.conf

在配置文件最后加入以下2行内容

request_slowlog_timeout =   表示时间只要超过1秒的都记录
slowlog = /usr/local/php-fpm/var/log/www-slow.log 记录日志存放路径

2、重新加载php-fpm,然后查看日志文件路径。

3、模拟一个慢执行的php

如果遇到500报错,可以把php.ini配置文件中display_errors报告设置成on显示错误信息。

[root@jimmylinux- php-fpm.d]# vi /usr/local/php-fpm/etc/php.ini

把sleep.php配置文件中的标点符号全部改成半角的英文状态符合就可以了

[root@jimmylinux- php-fpm.d]# vim /data/wwwroot/test.com/sleep.php

<?php
echo "test slow log";
sleep();
echo "done";
?>

4、重新执行curl就会看见执行过程中会有停顿

12.23 open_basedir

在php-fpm里面也可以定义open_basedir,之前讲过在php.ini定义open_basedir,如果服务器上有多个网站,在php.ini里面定义就不合适了,要么在Apache虚拟主机配置文件里面定义,要么就在php-fpm配置文件里面定义,我们可以针对每一个pool去定义不同的open_basedir。

1、编辑www.conf配置文件

[root@jimmylinux- php-fpm.d]# vim www.conf

在最后一行加入以下内容

php_admin_value[open_basedir]=/data/wwwroot/jimmy.com:/tmp/

2、重启php-fpm,然后curl访问,如果出现如下报错,可以分析并解决。

[root@jimmylinux- php-fpm.d]# ls /data/wwwroot/test.com/
.gif .js .php admin index.html sleep.php upload [root@jimmylinux- php-fpm.d]# curl -x127.0.0.: test.com/.php
No input file specified. 主要是因为open_basedir做了限制,所以会报错。
[root@jimmylinux- php-fpm.d]# vim www.conf  重新编辑配置文件

修改最后一行为正确的路径test.com

php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/

3、再次重启php-fpm,然后访问就正常了。

[root@jimmylinux- php-fpm.d]# /etc/init.d/php-fpm restart

如上操作,如果open_basedir定义不对,就会出问题。

生成环境中的服务器,php.ini的display_errors一定要设置成Off,不能够把错误信息显示到网站上来,而是把错误信息记录到日志存放到服务器指定的路径。

还要定义错误级别

在重启php-fpm之前,我们再故意改成一个错的路径。

[root@jimmylinux- php-fpm.d]# vim www.conf

php_admin_value[open_basedir]=/data/wwwroot/11test.com:/tmp/  故意把路径写错

[root@jimmylinux- php-fpm.d]# touch /usr/local/php-fpm/var/log/php_errors.log  创建一个错误日志文件

[root@jimmylinux- php-fpm.d]# chmod  /usr/local/php-fpm/var/log/php_errors.log  设置成777权限

重启php-fpm,再访问看看结果。

查看日志

[root@jimmylinux- php-fpm.d]# vim www.conf

php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/  修改成正确路径

这个时候重启php-fpm,再访问就正常了。

12.24 php-fpm进程管理

php-fpm的pool、php-fpm慢执行日志、open_basedir、php-fpm进程管理的更多相关文章

  1. Linux centosVMware php-fpm的pool、php-fpm慢执行日志、open_basedir

    一.php-fpm的pool vim /usr/local/php/etc/php-fpm.conf//在[global]部分增加 include = etc/php-fpm.d/*.conf mkd ...

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

    php-fpm的pool • vim /usr/local/php/etc/php-fpm.conf//在[global]部分增加 • include = etc/php-fpm.d/*.conf • ...

  3. Linux centosVMware LAMP php-fpm的pool、php-fpm慢执行日志、open_basedir、php-fpm进程管理

    一.php-fpm的pool vim /usr/local/php/etc/php-fpm.conf//在[global]部分增加 include = etc/php-fpm.d/*.conf mkd ...

  4. php-fpm的pool池子、php慢日志记录、open_basedir、php-fpm进程管理

    1.php-fpm的poo池子:目的:可以让不同的网站,对于不同的php解析,可以把不同的网站解析区分开.编辑:vim /usr/local/php5-fpm/etc/php-fpm.conf加入: ...

  5. FastCGI 进程管理器(FPM)

    FPM(FastCGI 进程管理器)用于替换 PHP FastCGI 的大部分附加功能,对于高负载网站是非常有用的. 它的功能包括: 支持平滑停止/启动的高级进程管理功能: 可以工作于不同的 uid/ ...

  6. php-fpm 记录慢执行日志

    有时候我们访问一个 php 的网站很慢,要想知道慢的原因,需要配置 php-fpm.conf,记录执行慢的日志: [root@localhost ~]$ cat /usr/local/php/etc/ ...

  7. 【PHP】善用php-fpm的慢执行日志slow log,分析php性能问题

    (转)善用php-fpm的慢执行日志slow log,分析php性能问题  众所周知,mysql有slow query log,根据慢查询日志,我们可以知道那些sql语句有性能问题.作为mysql的好 ...

  8. .Net写txt文件-简单的记录执行日志信息代码

    在执行一些批量操作时,想记录一些执行日志信息,越简单方便越好啊.提供一个常用的简单方法,将信息记录在txt文件里: public static void log(string content, str ...

  9. composer 安装依赖缓慢,查看 composer 的详细执行日志

    在 windows WSL 上安装 composer 依赖 composer install 发现执行异常缓慢,怀疑没有走国内的镜像,而是直接访问的 github. 需要能看到 composer 的执 ...

随机推荐

  1. 心脏滴血漏洞复现(CVE-2014-0160)

    心脏滴血漏洞简述 2014年4月7日,OpenSSL发布安全公告,在OpenSSL1.0.1版本至OpenSSL1.0.1f Beta1版本中存在漏洞,该漏洞中文名称为心脏滴血,英文名称为HeartB ...

  2. 关于生成器generator

    generator:个人认为是产生值的,和列表生成式类似,但是比列表生成式更加节省空间 我们平常自己构造的函数中,一般返回值时都会使用return,在generator中,我们使用的是yield yi ...

  3. 网络安全-主动信息收集篇第二章-三层网络发现之ping

    第三层网络扫描基于TCP/IP.ICMP协议. 优点:可路由.速度比较快 缺点:相对于二层网络扫描较慢,容易被边界防火墙过滤 所有扫描发现技术,都会有相应的对抗办法,所以无论是来自二层的网络扫描还是来 ...

  4. CSPS模拟 92

    为什么每次我的flag都会倒? skyh:12:15之前你把T2改出来我吃屎. ----12:10 于是12:12把线段树打完 12:13把主函数打完,过样例,带着一个sb错误交了,WA飞. 然后我就 ...

  5. 无聊的 邮递员 插头dp

    邮递员想知道,如果他每天都用不同路线走过10×20个点阵邮筒,他必须活过多少个世纪才能走遍所有方案? 7:00 改完T1,开始肝插头dp 7:10 放弃,颓博客 7:20 学习插头dp 7:21 放弃 ...

  6. ElasticSearch(三):通分词器(Analyzer)进行分词(Analysis)

    ElasticSearch(三):通过分词器(Analyzer)进行分词(Analysis) 学习课程链接<Elasticsearch核心技术与实战> Analysis与Analyzer ...

  7. python——float()函数用法

    float()函数是python中一个比较常用的内建函数,我们要详细掌握它的使用方法,避免在编写代码的过程中错误使用. float()函数返回一个十进制浮点型数值(小数). float()括号内只能是 ...

  8. MySQL系列:一句SQL,MySQL是怎么工作的?

    对于MySQL而言,其实分为客户端与服务端. 服务端,就是MySQL应用,当我们使用net start mysql命令启动的服务,其实就是启动了MySQL的服务端. 客户端,负责发送请求到服务端并从服 ...

  9. 篇六:项目使用Dubbo

    导语:Dubbo是阿里巴巴的一个分布式服务的开源框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000 ...

  10. Python 命令行之旅:深入 click 之选项篇

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...