2018.06.13学习笔记】【linux高级知识 12.21-12.24】

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

12.21 php-fpm的pool

一个Nginx服务器可能运行多个站点,那么php-fpm使用同一个pool资源,当一个站点资源耗尽之后,就有可能会影响所有站点都不能访问。每个站点使用独立的pool,就能够避免这种情况发生。

编辑php-fpm.conf配置文件:在[global]中增加一个pool [lgs.com]

[lgs.com]   //pool名
listen = /tmp/lgs.sock   //每个pool监听的sock都不一样,这里就是要区分开不同站点的地方
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

验证:ps一下就能看到有两个php-fpm的pool:

php-fpm   6115  0.0  0.4 226640  4716 ?        S    16:10   0:00 php-fpm: pool www
php-fpm   6116  0.0  0.4 226640  4712 ?        S    16:10   0:00 php-fpm: pool lgs.com

然后需要到nginx的虚拟主机配置文件里去配置php-fpm指定的pool

location ~ \.php$
    {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/lgs.sock; //这里指定pool的sock
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name;  //代理服务器的ip
    }

我们还可以像nginx的虚拟主机配置文件一样,把php-fpm的pool独立出来单独一个配置文件:例如lgs.com的pool配置文件为lgs.conf

先在php-fpm.conf增加include 配置行

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

再编辑www和lgs.com的pool配置文件分别为 www .conf 和 lgs.conf:

[www]  //www .conf
listen = /tmp/php-fcgi.sock
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

[lgs.com]   //lgs.conf
listen = /tmp/lgs.sock
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

12.22 php-fpm慢执行日志

Nginx有一个很好的特性就是慢执行日志。可以定义php执行超过指定时间,就会记录到慢执行日志中去,记录那个文件那行代码执行过程慢。

在pool的配置文件里配置

vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
request_slowlog_timeout = 2  //php执行超过2秒 记录日志
slowlog = /usr/local/php-fpm/var/log/www-slow.log  //存放日志的目录

验证测试:编辑一个php 的sleep脚本:

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

查看日志:

tail /usr/local/php-fpm/var/log/www-slow.log 
script_filename = /data/wwwroot/test.com/sleep.php
[0x00007fe02657e3e0] sleep() /data/wwwroot/test.com/sleep.php:3

12.23 open_basedir

当服务器运行多个站点时,php-fpm可以使用open_basedir来指定每个站点的目录范围,不能在php.ini中去只能指定一个目录。

vim /usr/local/php-fpm/etc/php-fpm.d/www.conf    //在pool的配置文件中增加一行配置
php_aming_value[open_basedir]=/data/wwwroot/test.com:/tmp/  //指定该站点的网站目录

12.24 php-fpm进程管理

php-fpm的pool配置文件中的关于进程的配置行的说明

vim www.conf
[www]
listen = /tmp/php-fcgi.sock
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic  //定义进程启动方式(dynamic表示动态,static表示静态)

//只有pm设置为dynamic,下面的配置才生效
pm.max_children = 50  //最多启动的子进程数量
pm.start_servers = 20  //开始启动的子进程数量
pm.min_spare_servers = 5  //空闲时最少有几个子进程,到5个就会自动增加
pm.max_spare_servers = 35  //空闲时最多有几个子进程,到35个就会自定清理
pm.max_requests = 500   //一个子进程最多可接受多少个请求,到达500就会自动退出子进程
rlimit_files = 1024   //每个子进程打开的文件句柄个数

转载于:https://my.oschina.net/u/3804114/blog/1830000

你可能感兴趣的:(操作系统,php,开发工具)