1. 程式人生 > >8.17 php-fpm的pool、php-fpm慢執行日誌、open_basedir、php-fpm進程管理

8.17 php-fpm的pool、php-fpm慢執行日誌、open_basedir、php-fpm進程管理

edi 監聽 time file ps aux 增加 ase pen min

1、php-fpm的pool

  編輯配置文件vim /usr/local/php/etc/php-fpm.conf,此時只定義了一個pool,即www

技術分享圖片

  可以定義多個pool,監聽不同的地址或socket,如果有多個站點時,可以使用多個pool,這樣當其中一個網站502之後,不會影響其他站點的正常訪問。

  在配置文件中增加如下部分,vim /usr/local/php/etc/php-fpm.conf

[aming.com]

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

技術分享圖片

  執行/usr/local/php-fpm/sbin/php-fpm -t驗證配置文件是否正確

  然後重新加載服務/etc/init.d/php-fpm reload

  執行ps aux |grep php-fpm可以看到aming.com的進程

技術分享圖片

2、php-fpm慢執行日誌

  通過查看日誌分析網站反應慢的原因。

  編輯配置文件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  //日誌存放位置

技術分享圖片

  然後檢查配置文件,並重新加載

  通過ls可以看出指定的目錄下已經生成相應的日誌文件

技術分享圖片

  此時,為了驗證日誌內容,需要制造一個慢請求,編輯配置文件vim /data/wwwroot/test.com/sleep.php,增加如下內容:

<?php

echo “test slow log”;

sleep(2);  //休眠兩秒鐘

echo “done”;

?>

  此時,進行訪問時,請求會休眠2秒,使用curl命令,然後再查看日誌

技術分享圖片

3、open_basedir

  可以針對不同的pool定義open_basedir

  編輯配置文件vim /usr/local/php-fpm/etc/php-fpm.d/aming.conf,增加如下內容:

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

技術分享圖片

4、php-fpm進程管理  

  pm = dynamic //動態進程管理,也可以是static,只有動態的話,下面的配置才會生效,如果是靜態的,則只有本行生效

  pm.max_children = 50 //最大子進程數,ps aux可以查看

  pm.start_servers = 20 //啟動服務時會默認啟動的進程數

  pm.min_spare_servers = 5 //定義在空閑時段,子進程數的最少數量,如果達到這個數值時,php-fpm服務會自動派生新的子進程。

  pm.max_spare_servers = 35 //定義在空閑時段,子進程數的最大值,如果高於這個數值就開始清理空閑的子進程。

  pm.max_requests = 500 //定義一個子進程最多處理的請求數,也就是說在一個php-fpm的子進程最多可以處理這麽多請求,當達到這個數值時,它會自動退出。

8.17 php-fpm的pool、php-fpm慢執行日誌、open_basedir、php-fpm進程管理