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

php-fpm的pool:

php-fpm的pool是這個php-fpm服務的池子,php-fpm支持定義多個池子,可以監聽多個不一樣的sock或者監聽不一樣的ip。若是Nginx上跑了幾個站點,每一個站點均可以配置一個pool,當其中一個站點的php報502或者其餘錯誤了,那麼其餘的站點就不會受到影響。若是所有站點都使用同一個pool的話,當其中一個php出問題了,那麼所有的站點都會癱掉,因此須要每一個站點配置一個pool,把這些站點都隔離開來。php

配置pool能夠在php-fpm的主配置文件裏進行配置:nginx

vim /usr/local/php-fpm/etc/php-fpm.confvim

 

2708

在配置文件中增長以下內容:
[aming.com]
listen = /tmp/test.sock
#listen = 127.0.0.1:9000
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

而後測試一下有沒有語法錯誤,沒問題的話就重啓:bash

[root@aming-01 etc]# /usr/local/php-fpm/sbin/php-fpm -t
[02-May-2018 23:25:33] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@aming-01 etc]# /etc/init.d/php-fpm reload

 

這時候查看一下php-fpm進程會發現多了一個pool,也就是咱們剛剛配置的那個aming.com:架構

查看進程:ps aux |grep php-fpm框架

 

而後在虛擬主機配置文件裏配置這個pool:運維

vim /usr/local/nginx/conf/vhost/aaa.com.confcurl

增長以下內容:php-fpm

location ~ \.php$

   {

       include fastcgi_params;

       fastcgi_pass unix:/tmp/aming.sock;

       #fastcgi_pass 127.0.0.1:9000;

       fastcgi_index index.php;

       fastcgi_param SCRIPT_FILENAME /data/wwwroot/aming.com$fastcgi_script_name;

   }

配置完成實例:測試

 

把pool都配置在主配置文件裏感受比較亂,咱們能夠把這些pool都分離到一個個文件中,首先在php-fpm主配置文件裏的[global]部分加上如下內容:

include = etc/php-fpm.d/*.conf

2712

接着建立一個php-fpm.d目錄:

mkdir /usr/local/php-fpm/etc/php-fpm.d/

進入到該目錄下:

cd /usr/local/php-fpm/etc/php-fpm.d/

建立一個www.conf文件:

vim www.conf

而後複製php-fpm主配置文件裏www的那個pool內容,粘貼到這個www.conf文件中:

接着再建立一個test.conf,一樣的也是複製粘貼php-fpm主配置文件裏aming.com的那個pool內容:

這時就能夠把php-fpm主配置文件裏的pool都刪了。

#配置文件
[www]
listen = /tmp/php-fcgi.sock
#listen = 127.0.0.1:9000
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

[aming.com]
listen = /tmp/aming.sock
#listen = 127.0.0.1:9000
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

這樣把pool分離出來後,php-fpm主配置文件裏就乾淨多了,不必把pool配置在主配置文件裏,只須要在裏面用include引入便可。

記得配置完後,檢測一下語法有沒有錯誤,以上就是如何配置pool的簡單介紹。

檢查語法和重啓:

 

 

php-fpm慢執行日誌:

php-fpm的慢執行日誌是一個頗有用的東西,若是須要作php的網站,建議使用lnmp架構,由於咱們能夠去分析php-fpm的慢執行日誌,在運維的平常工做當中常常會遇到一個讓人頭疼的問題,那就是你的老闆或者你的客戶常常會反饋網站的訪問速度變慢了,因此咱們得知道訪問慢的根本緣由,才能去解決這個訪問慢的問題。若是是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

2718

修改完成夠,測試一下語法,並從新加載配置文件:

[root@aming-01 php-fpm.d]# /usr/local/php-fpm/sbin/php-fpm -t    #檢測語法是否有錯誤
[02-May-2018 23:56:48] NOTICE: configuration file /usr/local/php-fpm/etc/php-fpm.conf test is successful
[root@aming-01 php-fpm.d]# /etc/init.d/php-fpm reload         #重啓php-fpm服務
Reload service php-fpm  done

而後查看一下是否有生成日誌文件,這個時候日誌文件是空的:

 

接下來咱們來模擬一個慢執行的php,須要寫一個腳本:

vim /data/wwwroot/test.com/sleep.php

腳本內容以下:

<?php
echo "test slow log";
sleep(2);
echo "done";
?>

 

使用curl對這個腳本進行訪問:

2722

訪問完以後查看慢執行日誌,這個日誌告訴了咱們如下信息:

2723

如今咱們打開sleep.php看一看:

2724

因此這就是慢執行日誌的做用,可以幫咱們記錄訪問慢的緣由。不過通常正常狀況下定義爲2秒才記錄日誌會比較好,由於不少的腳本執行因爲硬件或框架的緣由,都會致使執行時間超過1秒。

 

 

open_basedir:

以前在Apache裏介紹過open_basedir的做用了,這裏就不過多介紹了,只介紹一下在Nginx中的配置過程。

編輯配置文件:

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

加入如下內容:

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

保存退出後從新加載配置文件,而後使用curl進行訪問,可以正常訪問就沒問題:

curl -x127.0.0.1:80 test.com/sleep.php -I

 

定義php-fpm的錯誤日誌:

vim /usr/local/php-fpm/etc/php.ini

搜索:error_log

而後在error_log下面指定錯誤日誌存放路徑:

2728

定義日誌級別

搜索:error_reporting

 

2729

保存退出後,修改pool文件,故意改錯,測試一下是否會記錄錯誤日誌:

2730

而後建立錯誤日誌文件,而且修改此文件的權限爲777:

2731

 

重啓php-fpm服務:

2732

 

進行訪問,能夠看到報了404錯誤:

2733

 

如今就能夠去看看日誌文件裏是否有記錄這條錯誤信息:

cat /usr/local/php-fpm/var/log/php_errors.log

2734

 

而後咱們把pool文件修改正確,再次重啓php-fpm,接着再進行訪問,狀態碼爲200就沒問題了:

2735

 

 

php-fpm進程管理:

關於static和dynamic  的一些區別:

Static:

2737

這些進程的數量都是能夠自定義的。

 

 

個人博客即將搬運同步至騰訊雲+社區,邀請你們一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=1gd4fdbso9x7k

相關文章
相關標籤/搜索