2018.06.13學習筆記】【linux高級知識 12.21-12.24】

12.21 php-fpm的pool

一個Nginx服務器可能運行多個站點,那麼php-fpm使用同一個pool資源,當一個站點資源耗盡以後,就有可能會影響全部站點都不能訪問。每一個站點使用獨立的pool,就可以避免這種狀況發生。php

編輯php-fpm.conf配置文件:在[global]中增長一個pool [lgs.com]nginx

[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:vim

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.confphp-fpm

先在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執行超過指定時間,就會記錄到慢執行日誌中去,記錄那個文件那行代碼執行過程慢。spa

在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腳本:unix

vim /data/wwwroot/test.com/sleep.php
<?php
echo "test slow log";
sleep(3);
echo "done";
?>

查看日誌:

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   //每一個子進程打開的文件句柄個數
相關文章
相關標籤/搜索