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

51.php-fpm的pool、php-fpm慢執行日誌open_basedir、php-fpm進程

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

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

技術分享圖片

 mkdir /usr/local/php-fpm/etc/php-fpm.d/
 cd /usr/local/php-fpm/etc/php-fpm.d/
 vim www.conf                                                  //內容如下
[www]
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
  • 繼續編輯配置文件
 vim chinantfy.conf //內容如下
[chinantfy]
listen = /tmp/chinantfy.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 restart/reload            //重啟或者重新加載配置文件
 ps aux | grep php-fpm

技術分享圖片

ls /usr/local/nginx/conf/vhost/
vim /usr/local/nginx/conf/vhost/test.com.conf

技術分享圖片

  • 通過指定不同的sock來選擇不同的連接池

    二、php-fpm慢執行日誌(用於定位php網站訪問變慢)

    vim /usr/local/php-fpm/etc/php-fpm.d/www.conf      //加入如下內容
    request_slowlog_timeout = 1        //超過1秒就會記錄,一般用2 即可
    slowlog = /usr/local/php-fpm/var/log/www-slow.log

    技術分享圖片

    /usr/local/php-fpm/sbin/php-fpm -t
    /etc/init.d/php-fpm restart/reload 
  • 重新加載nginx服務
    /usr/local/nginx/sbin/nginx -t
    /etc/init.d/nginx  reload
    vim /data/wwwroot/test.com/sleep.php         //寫入如下內容
    <?php 
    echo "test slow log";
    sleep(2);
    echo "done";
    ?>

    技術分享圖片

    curl -x127.0.0.1:80 test.com/sleep.php 
    cat /usr/local/php-fpm/var/log/www-slow.log

    技術分享圖片

  • log文件顯示php第三行導致運行變慢

    三、php-fpm定義open_basedir

    vim /usr/local/php-fpm/etc/php-fpm.d/www.conf    //加入如下內容
    php_admin_value[open_basedir]=/data/wwwroot/123test.com:/tmp/      //註意這裏路徑特意改錯了
    /usr/local/php-fpm/sbin/php-fpm -t
    /etc/init.d/php-fpm reload
    curl -x127.0.0.1:80 test.com/sleep.php  -I

    技術分享圖片

  • 配置錯誤日誌
    vi /usr/local/php-fpm/etc/php.ini   //修改下面兩行
    error_log=/usr/local/php-fpm/var/log/php_errors.1og
    error_reporting =E_ALL
    /usr/local/php-fpm/sbin/php-fpm -t
    /etc/init.d/php-fpm reload
  • 手動生成日誌文件並修改權限
    touch /usr/local/php-fpm/var/log/php_errors.1og
    chmod 777 /usr/local/php-fpm/var/log/php_errors.1og
  • 再次測試
    curl -x127.0.0.1:80 test.com/sleep.php  -I

    技術分享圖片

  • 再次更改www.conf,修改路徑,再次測試

    php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/
    /usr/local/php-fpm/sbin/php-fpm -t
    /etc/init.d/php-fpm reload

    再次測試
    查看錯誤日誌

    四、php-fpm進程管理

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

    技術分享圖片

    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的子進程最多可以處理這麽多請求,當達到這個數值時,它會自動退出。

51.php-fpm的pool、php-fpm慢執行日誌open_basedir、php-fpm進程