php-fpm的pool - 慢执行日志 - 进程管理 - open_basedir
2019獨角獸企業重金招聘Python工程師標準>>>
php-fpm的pool :
為避免多站點使用同一個pool時因一個站點故障導致php資源耗盡,牽連使用同一個pool的其他站點的正常工作,可對每一個站點設置獨立pool。
增加pool:
1.編輯php-fpm配置文件:
vim /usr/local/php-fpm/etc/php-fpm.conf ? ? ? ? ? ? ?#在[global]部分內添加以下內容:
[zjy.com] #pool名字 listen = /tmp/zjy.sock #監聽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 = 10242.檢測并重新加載配置:
/usr/local/php-fpm/sbin/php-fpm -t;/etc/init.d/php-fpm reload
3.檢查是否配置成功:
ps aux |grep php-fpm ? ? ? ? ? ? ? ? ? #查看最右側是否出現 pool zjy.com 的進程
?
站點分配pool:
1.編輯虛擬主機配置文件:
vim /usr/local/nginx/conf/vhost/aaa.com.conf ? ? ? ? ? #在server{}內添加以下內容:
location ~ \.php${include fastcgi_params;fastcgi_pass unix:/tmp/zjy.sock; #更改對應pool的sock文件路徑fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /data/wwwroot/default$fastcgi_script_name;}?
為使php-fpm配置文件更簡潔,可以把配置文件中的所有pool配置拆離出來放到獨立的文件中,操作如下:
1.編輯php-fpm配置文件:
vim /usr/local/php-fpm/etc/php-fpm.conf ? ? ? ? ? ? ?#在[global]部分內添加以下內容:
include = etc/php-fpm.d/*.conf并將該文件中的每組pool配置拷貝并刪除。
2.創建上一步include字段對應目錄和所有pool配置對應的conf文件:
mkdir -p /etc/php-fpm/etc/;touch www.conf;touch zjy.conf
3.把第一步拷貝的pool配置粘貼到對應conf配置中。
4.檢測并重新加載配置:
/usr/local/php-fpm/sbin/php-fpm -t;/etc/init.d/php-fpm reload
?
php-fpm的慢執行日志:
可根據該日志分析php網站運行過慢的原因。
打開慢執行日志:
1.編輯站點配置文件:
vim /usr/local/php-fpm/etc/php-fpm.d/www.conf ? #添加以下內容,注意此www.conf配置中的sock文件被哪個站點所用。后續第三步有用到
request_slowlog_timeout = 1 #當請求超過1秒開始記錄日志 slowlog = /usr/local/php-fpm/var/log/www-slow.log #日志存放地址2.檢測并重新加載配置:
/usr/local/php-fpm/sbin/php-fpm -t;/etc/init.d/php-fpm reload
3.創建測試php文件,在使用www.conf的pool的站點的路徑下創建:
vim /data/wwwroot/test.com/sleep.php ? ? ? ? ? ? ? ? #添加以下內容:
<?php echo "test slow log"; sleep(2); #休眠2秒 echo "done"; ?>4.測試:
執行:curl -x127.0.0.1:80 test.com/sleep.php?
# curl -x127.0.0.1:80 test.com/sleep.php test slow logdone同時查看慢執行日志:
執行:tailf /usr/local/php-fpm/var/log/www-slow.log?
# tailf /usr/local/php-fpm/var/log/www-slow.log [16-Aug-2017 17:14:55] [pool www] pid 6451 script_filename = /data/wwwroot/test.com/sleep.php #日志顯示這個php腳本運行慢 [0x00007fe02560e2e0] sleep() /data/wwwroot/test.com/sleep.php:3 #具體運行慢的地上在這個腳本的第三行?
php-fpm中指定open_basedir:
當一臺服務器跑多個站點時,使用open_basedir限定每個站點所能訪問的服務器上的目錄的范圍。在php-fpm服務中,可以針對每個pool設定open _ basedir。
1.編輯站點配置文件:
vim /usr/local/php-fpm/etc/php-fpm.d/www.conf ? ? ? ? ? ?#添加以下內容:
php_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/2.檢測并重新加載配置:
/usr/local/php-fpm/sbin/php-fpm -t;/etc/init.d/php-fpm reload
3.創建測試php文件:
vim /data/wwwroot/test.com/1.php ? ? ? ?#添加以下內容:
<?php echo "This is a test php of open_basedir";4.測試:
執行:curl -x127.0.0.1:80 test.com/1.php
# curl -x127.0.0.1:80 test.com/1.php This is a test php of open_basedir?
php-fpm進程管理:
/usr/local/php-fpm/etc/php-fpm.d/www.conf配置參數解析:
[www] listen = /tmp/php-fcgi.sock listen.mode = 666 user = php-fpm group = php-fpm ;定義進程啟動方式(dynamic動態,static靜態) #此配置使用;進行注釋 ;當設置為dynamic,下面配置才生效 pm = dynamic ;最多可啟動的子進程數量 pm.max_children = 50 ;設定初始啟動的進程數量 pm.start_servers = 20 ;表示php-fpm空閑時最少要有幾個子進程 pm.min_spare_servers = 5 ;表示php-fpm空閑時最多要有幾個子進程 pm.max_spare_servers = 35 ;表示一個子進程最多可接受多少個請求 pm.max_requests = 500 ;表示每個子進程打開的多少個文件句柄 rlimit_files = 1024 ;當請求超過1秒開始記錄日志 request_slowlog_timeout = 1 ;日志存放地址 slowlog = /usr/local/php-fpm/var/log/www-slow.logphp_admin_value[open_basedir]=/data/wwwroot/test.com:/tmp/?
轉載于:https://my.oschina.net/u/3866910/blog/1930467
總結
以上是生活随笔為你收集整理的php-fpm的pool - 慢执行日志 - 进程管理 - open_basedir的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一加Buds Pro 2新配色“云峰白”
- 下一篇: 浅谈 DDoS 攻击与防御