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

php-fpm的pool:

dc5b024f1062b21c73c6de372c267a31.png

38680cee5b063c3dba1a2682f2bdcfa1.png

php-fpm的pool是这个php-fpm服务的池子,php-fpm支持定义多个池子,能够监听多个不同的sock或者监听不同的ip。如果Nginx上跑了几个站点,每个站点都可以配置一个pool,当其中一个站点的php报502或者其他错误了,那么其他的站点就不会受到影响。如果全部站点都使用同一个pool的话,当其中一个php出问题了,那么全部的站点都会瘫掉,所以需要每个站点配置一个pool,把这些站点都隔离开来。

配置pool可以在php-fpm的主配置文件里进行配置:

vim /usr/local/php-fpm/etc/php-fpm.conf

d3fd2c3192b542987197a7ac233486bd.png

在配置文件中增加如下内容:

[aming.com]

listen = /tmp/test.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

aac4ebe4dc95888823d5937e10babb48.png

然后测试一下有没有语法错误,没问题的话就重启:

[root@aming-01 etc]# /usr/local/php-fpm/sbin/php-fpm -t

[02-May-2018 23:25:33] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

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

这时候查看一下php-fpm进程会发现多了一个pool,也就是我们刚刚配置的那个aming.com:

查看进程:ps aux |grep php-fpm

777ac0b4ece763e970d7fd18e750ed5d.png

然后在虚拟主机配置文件里配置这个pool:

vim /usr/local/nginx/conf/vhost/aaa.com.conf

增加如下内容:

location ~ \.php$

{

include fastcgi_params;

fastcgi_pass unix:/tmp/aming.sock;

#fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /data/wwwroot/aming.com$fastcgi_script_name;

}

配置完成实例:

da5f9bd91dc9b0ff0099935cd3173902.png

把pool都配置在主配置文件里感觉比较乱,我们可以把这些pool都分离到一个个文件中,首先在php-fpm主配置文件里的[global]部分加上以下内容:

include = etc/php-fpm.d/*.conf

7a9b183ae8a9e57c11298616c5c44655.png

接着创建一个php-fpm.d目录:

mkdir /usr/local/php-fpm/etc/php-fpm.d/

进入到该目录下:

cd /usr/local/php-fpm/etc/php-fpm.d/

创建一个www.conf文件:

vim www.conf

然后复制php-fpm主配置文件里www的那个pool内容,粘贴到这个www.conf文件中:

3834094fc8a183fb80128c7b42ed7d4b.png

接着再创建一个test.conf,同样的也是复制粘贴php-fpm主配置文件里aming.com的那个pool内容:

077180077091ae670c3685e714b30725.png

这时就可以把php-fpm主配置文件里的pool都删了。

#配置文件

[www]

listen = /tmp/php-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 = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

[aming.com]

listen = /tmp/aming.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

这样把pool分离出来后,php-fpm主配置文件里就干净多了,没必要把pool配置在主配置文件里,只需要在里面用include引入即可。

记得配置完后,检测一下语法有没有错误,以上就是如何配置pool的简单介绍。

检查语法和重启:

7930c4644be947845d9402babfbae03f.png

php-fpm慢执行日志:

3e446b3108451ec048b870a35101d14d.png

php-fpm的慢执行日志是一个很有用的东西,如果需要做php的网站,建议使用lnmp架构,因为我们可以去分析php-fpm的慢执行日志,在运维的日常工作当中经常会遇到一个让人头疼的问题,那就是你的老板或者你的客户经常会反馈网站的访问速度变慢了,所以我们得知道访问慢的根本原因,才能去解决这个访问慢的问题。如果是php网站,就可以通过慢执行日志去分析原因,所以才说php-fpm的慢执行日志是一个很有用的东西。

下面用示例介绍一下如何配置慢执行日志:

编辑www.conf文件:

vim /usr/local/php-fpm/etc/php-fpm.d/www.conf

增加以下内容:

request_slowlog_timeout = 1

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

20a73aa60e854b8856362ae438ffeab3.png

修改完成够,测试一下语法,并重新加载配置文件:

[root@aming-01 php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t #检测语法是否有错误

[02-May-2018 23:56:48] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful

[root@aming-01 php-fpm.d]# /etc/init.d/php-fpm reload #重启php-fpm服务

Reload service php-fpm done

然后查看一下是否有生成日志文件,这个时候日志文件是空的:

b4561d134a43ca482d6d68053b66daf3.png

接下来我们来模拟一个慢执行的php,需要写一个脚本:

vim /data/wwwroot/test.com/sleep.php

脚本内容如下:

echo "test slow log";

sleep(2);

echo "done";

?>

使用curl对这个脚本进行访问:

13ff5ffd2434775444e2be2b287c1485.png

访问完之后查看慢执行日志,这个日志告诉了我们以下信息:

dc8df8b892301ce73eaeacd7b3857d8e.png

现在我们打开sleep.php看一看:

01f7389477a9ee689df75035e32fa6fc.png

所以这就是慢执行日志的作用,能够帮我们记录访问慢的原因。不过一般正常情况下定义为2秒才记录日志会比较好,因为很多的脚本执行由于硬件或框架的原因,都会导致执行时间超过1秒。

open_basedir:

cac3483de8792acaca2f096fce7b287c.png

之前在Apache里介绍过open_basedir的作用了,这里就不过多介绍了,只介绍一下在Nginx中的配置过程。

编辑配置文件:

vim /usr/local/php-fpm/etc/php-fpm.d/www.conf

加入以下内容:

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

80fa1402991a621e507580a91a003fe6.png

保存退出后重新加载配置文件,然后使用curl进行访问,能够正常访问就没问题:

curl -x127.0.0.1:80 test.com/sleep.php -I

a4668d669bd7d659ea8f581ccadd9a71.png

定义php-fpm的错误日志:

vim /usr/local/php-fpm/etc/php.ini

搜索:error_log

然后在error_log下面指定错误日志存放路径:

8615ca5464aea7d8e1192410fba91d51.png

定义日志级别

搜索:error_reporting

7ec81a6d1504e6dcc3ef6a4a1779876f.png

保存退出后,修改pool文件,故意改错,测试一下是否会记录错误日志:

a99093ed4ae703273ed383638dd77a46.png

然后创建错误日志文件,并且修改此文件的权限为777:

60ef6d049808003aed3227d40b0caccf.png

重启php-fpm服务:

ef9a8e4f9f1e5668d54d912df5a3a503.png

进行访问,可以看到报了404错误:

17fa35db020736dce4308b21798387ae.png

现在就可以去看看日志文件里是否有记录这条错误信息:

cat /usr/local/php-fpm/var/log/php_errors.log

d95f9b7a8849b41512a0017cb3f15e28.png

然后我们把pool文件修改正确,再次重启php-fpm,接着再进行访问,状态码为200就没问题了:

85ae07aefe0ee7d6151a84c67943c20d.png

php-fpm进程管理:

8b74610f3452b4a45fae3e6a310c610d.png

关于static和dynamic  的一些区别:

Static:

6c69d54c1b3c474272c4a68ba7c6faf3.png

这些进程的数量都是可以自定义的。

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1gd4fdbso9x7k

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值