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

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

Linux

php-fpm的pool

編輯配置文件
vim /usr/local/php-fpm/etc/php-fpm.conf

在配置文件中添加如下的內容
[test.com]
listen = /tmp/test.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

配置nginx使用不同的spool,我使用的站點為test.com
vim /usr/local/nginx/conf/vhost/test.com.conf

找到 fastcgi_pass unix: 這一行,更改為:
fastcgi_pass unix:/tmp/test.sock;

同樣php-fpm的配置文件也是可以割離的
vim /usr/local/php-fpm/etc/php-fpm.conf

在配置文件中添加如下行
include = etc/php-fpm.d/*.conf

那麽配置文件就可以放在php-fpm.d下

執行命令
mkdir php-fpm.d

然後就可以將配置文件單獨分開


php-fpm慢執行日誌

項目用php開發,在生產運行的過程中,應該一段時間監測下php腳本運行狀態,哪些php進程速度太慢,有哪些錯誤日誌。
如何來查看檢測比較慢的php腳本呢?那麽可以查看php-fpm慢日誌。
編輯一個配置文件,我的是www.conf
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
request_slowlog_timeout = 1

設定時間,超過1秒的
slowlog = /usr/local/php-fpm/var/log/www-slow.log #定義日誌存放的地址

更改配置文件後檢查配置文件以及重新加載配置
/usr/local/php-fpm/sbin/php-fpm -t
/etc/init.d/php-fpm reload

測試配置是否成功,我的www.conf配置文件是aaa.com這個站點在使用的



```在站點aaa.com下創建一個名字為sleep.php測試文件
`vim /data/wwwroot/aaa.com/sleep.php`

在文件中添加如下的內容
<?php
echo "test slow log";
sleep(2);
echo "done";
?>

再對aaa.com下的sleep.php進行訪問
curl -x192.168.71.131:80 aaa.com/sleep.php

訪問完成後查看慢日誌
`cat /usr/local/php-fpm/var/log/www-slow.log`

-----

# open_basedir
open_basedir 的作用是限制php在指定的目錄裏活動

編輯一個配置文件,我的是www.conf
`vim /usr/local/php-fpm/etc/php-fpm.d/www.conf`

在配置文件中添加如下行即可完定義
`php_admin_value[open_basedir]=/data/wwwroot/aaa.com:/tmp/`

# php-fpm進程管理
![](http://i2.51cto.com/images/blog/201806/13/a2dcd5cf1f2499103b93592a3012e8a3.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

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

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