linux學習第四十八篇:php-fpm的pool,php-fpm慢執行日誌,定義open_basedir,php-fpm進程管理

php-fpm的pool

Nginx可以配置多個虛擬主機,php-fpm同樣也支持配置多個pool,每一個pool可以監聽一個端口,也可以監聽一個socket。

  • vim /usr/local/php/etc/php-fpm.conf
    在[global]部分增加:
    include = etc/php-fpm.d/*.conf

  • 創建php-fpm.d目錄:
    mkdir /usr/local/php/etc/php-fpm.d

  • 進入目錄:
    cd /usr/local/php/etc/php-fpm.d/
    在該目錄下編輯兩個.conf文件
    vim xie.conf
    內容如下:

[xie.com]
listen = /tmp/xie.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 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
  • 編輯好後把php-fpm.conf配置文件裏的www的pool刪除,只留下[global]部分

  • 在Nginx的虛擬機配置文件中加入下列內容,這樣就把兩個站點隔離開

location ~ \.php$
    {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/xie.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name;
    }

test.com和aaa.com兩個站點隔離開了
這裏寫圖片描述

  • 測試語法:
    /usr/local/php-fpm/sbin/php-fpm -t

  • 重啓php-fpm:
    /etc/init.d/php-fpm restart
    顯示的就有兩個pool
    這裏寫圖片描述

php-fpm慢執行日誌

通過php-fpm的慢執行入職,我們可以非常清晰瞭解到PHP的腳本哪裏執行時間長,它可以定位到具體的行。

vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
加入如下內容:

request_slowlog_timeout = 1 //超過1秒中就會記錄日誌
slowlog = /usr/local/php-fpm/var/log/www-slow.log //日誌的存放路徑
  • 測試語法:
    /usr/local/php-fpm/sbin/php-fpm -t

  • 重啓php-fpm:
    /etc/init.d/php-fpm restart

配置nginx的虛擬主機test.com.conf,把unix:/tmp/php-fcgi.sock改爲unix:/tmp/www.sock

重新加載nginx服務

編寫測試腳本:
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
訪問的時候出現500,說明有語法錯誤。
這裏寫圖片描述
可以修改**vim /usr/local/php-fpm/etc/php.ini**php配置文件中的display_error,該爲On,那麼訪問的時候有錯誤就會有輸出信息,這裏就是測試文件的符號不是英文符號的問題:
這裏寫圖片描述
記得reload重新加載配置文件
這裏寫圖片描述

查看慢執行日誌:
cat /usr/local/php-fpm/var/log/www-slow.log
慢執行日誌裏指出了哪個腳本運行慢,也指出了是哪一行執行慢
這裏寫圖片描述

定義open_basedir

vim /usr/local/php-fpm/etc/php-fpm.d/www.conf
加入如下內容:

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

訪問測試腳本:
curl -x127.0.0.1:80 test.com/3.php -I
可以正常訪問:
這裏寫圖片描述

vim /usr/local/php-fpm/etc/php.ini 配置錯誤日誌路徑:
這裏寫圖片描述

把test.com該爲xie.com,再次測試,查看錯誤日誌:
因爲open_basedir限制的地址寫錯了,所有就會報錯,訪問出現404
這裏寫圖片描述

php-fpm進程管理

這裏寫圖片描述
pm = dynamic //動態進程管理,也可以是static,如果改爲static那麼只有pm.max_children生效,其他的就不會生效

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

擴展
nginx中的root和alias區別 http://blog.csdn.net/21aspnet/article/details/6583335
nginx的alias和root配置 http://www.ttlsa.com/nginx/nginx-root_alias-file-path-configuration/
http://www.iigrowing.cn/shi-yan-que-ren-nginx-root-alias-location-zhi-ling-shi-yong-fang-fa.html 這個更詳細

發佈了79 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章