day 52 php-fpm相關
阿新 • • 發佈:2019-02-09
12.21 php-fpm的pool
- 如果所有網站使用一個pool,其中一個網站發生故障,則會耗盡php資源,造成其它站點出現502的狀態,因此有必要將各個站點隔離開來,每個站點使用一個單獨的pool,可以在/usr/local/php/etc/php-fpm.conf檔案中繼續配置其它的pool,在/usr/local/nginx//conf/vhost定義一個新的test.conf檔案,fastcgi_pass unix指定一個其它的socket檔案
- vim /usr/local/php/etc/php-fpm.conf #編輯php-fpm.conf檔案,在[global]部分增加如下內容
- mkdir /usr/local/php/etc/php-fpm.d/
- cd /usr/local/php/etc/php-fpm.d
- vim www.conf #在對應路徑下建立並編輯www.conf檔案
- vim aming.conf #繼續建立並編輯另一個conf檔案
- /usr/local/php-fpm/sbin/php-fpm -t #檢查語法錯誤
- /etc/init.d/php-fpm restart #重啟php-fpm
- vim /usr/local/php-fpm/etc/php-fpm.d/www.conf #編輯www.comf檔案,加入如下內容
- 配置nginx的虛擬主機test.com.conf,把unix:/tmp/php-fcgi.sock改為unix:/tmp/www.sock
- 重新載入nginx服務
- vim /data/wwwroot/test.com/sleep.php #寫入如下內容
- curl -x127.0.0.1:80 test.com/sleep.php #命令列測試
- cat /usr/local/php-fpm/var/log/www-slow.log #檢視生成的慢日誌,日誌中會指明sleep.php檔案中第3行執行慢,因其執行了2秒,超過1秒,故會生成慢日誌
php-fpm定義open_basedir
- vim /usr/local/php-fpm/etc/php-fpm.d/test.conf #編輯test.conf 檔案,加入如下內容
- /data/wwwroot/test.com/test.php #建立測試php指令碼test.php,
- curl -x127.0.0.1:80 test.com/test.php #命令列進行測試
- 再次更改test.conf,修改路徑,如果路徑不對,再次測試則會出問題
- vim /usr/local/php-fpm/etc/php.ini #編輯php.ini 檔案,配置錯誤日誌,設定display_errors = Off,log_errors = On,error_log = /usr/local/php-fpm/var/log/php_errors.log,errot_reporting = E_ALL
- touch /usr/local/php-fpm/var/log/php_errors.log #手動生成錯誤日誌
- chmod 777 /usr/local/php-fpm/var/log/php_errors.log #更改錯誤日誌許可權,避免不能寫入
- /etc/init.d/php-fpm restart
- 在open_basedir指定為錯誤路徑的情況下, curl命令列再次測試,並檢視錯誤日誌
- cat /usr/local/php/etc/php-fpm.d/www.conf #檢視www.conf檔案,會有如下部分內容
- pm = dynamic #表示動態程序管理,根據需求自動生成會銷子程序,也可以是static
- pm.max_children = 50 #最大子程序數,ps aux可以檢視,如果上一步配置為static,只有該行生效
- pm.start_servers = 20 #啟動服務時會啟動的程序數
- pm.min_spare_servers = 5 #定義在空閒時段,子程序數的最少數量,如果達到這個數值時,php-fpm服務會自動派生新的子程序。
- pm.max_spare_servers = 35 #定義在空閒時段,子程序數的最大值,如果高於這個數值就開始清理空閒的子程序。
- pm.max_requests = 500 #定義一個子程序最多處理的請求數,也就是說在一個php-fpm的子程序最多可以處理這麼多請求,當達到這個數值時,它會自動退出。