12.21 php-fpm的poolphp
php-fpm有一個概念叫pool,就是使用psaux看到的右側的那一列,也就是它的池子,nginx
以下圖,咱們在這裏只定義了一個pool程序員
其實他是支持定義多個池子的,每個池子咱們能夠監聽不一樣的sock,或者不一樣的tcpip,這樣的話若是咱們的nginx有好幾個站點每一個站點均可以使用不一樣pool,這樣作的好處就是其中一個php502了,其餘站點不收影響,(502頗有多是php資源不夠了)若是你全部的網站都使用了同一個池子的話,其中一個網站發生了故障,好比程序員寫的代碼有問題把php資源耗盡了,那麼其餘幾個也會502,因此咱們有必要把網站隔離開來,每一個站點使用單獨的pool。apache
添加多個pool方法:瀏覽器
能夠在如上圖中的文件中繼續添加,如再添加一個叫aming.com的pool就在文件內容後面添加以下一段。服務器
而後咱們檢查錯誤,curl
而後從新加載。tcp
而後咱們看一下pool,能夠看到右側多了一個aming.com的pool。php-fpm
那麼咱們怎麼使用它呢?網站
首先而後,把test.com.conf定義成php-fcgi.sock
而後把另外一個aaa.com.conf定義成aming.sock,(若是裏面沒有這一段那麼就從test.com.conf裏拷貝一下)
這樣兩個網站就隔離開了。
固然php-fpm也是支持include,
而後,以後進入到這個目錄裏,而後把php-fpm.conf裏的www一段剪切到www.conf裏,而後再把php-fpm.conf裏的aming.com一段剪切到裏面。
而後咱們檢查錯誤,
而後從新加載。這個效果是和第一種同樣的。
12.22 php-fpm慢執行日誌
咱們首先
意思是超過一秒鐘就要記錄日誌(若是在真實場景下咱們建議是兩秒,應該不少腳本執行都會超過一秒),而後放在第二行的地址裏。
而後檢查錯誤從新加載,以後咱們能夠看一下這個目錄裏有沒有生成日誌文件。有的話咱們能夠看看裏面有沒有內容。裏面應該是空的,由於咱們尚未任何超過一秒的php執行的過程,因此咱們須要模擬一個慢執行的php。
那麼咱們就來寫一個腳本,由於php-fcgi是被test.com用的,因此咱們須要在這個站點下作操做。
咱們作一個腳本故意讓它執行休眠2秒
在裏面寫入咱們能夠把它分紅三行
而後咱們運行一下試試(若是沒有任何輸出就說明有錯誤)
裏面有一行咱們把它打開後,也就是改爲on後,咱們就能夠在瀏覽器或者curl裏顯示錯誤。而後咱們再運行,以下圖提示咱們語法錯誤
這裏應該是咱們的sleep.php標點符號寫的是中文的標點,咱們給它改爲英文便可,而後咱們再次運行,能夠看出它執行過程是停頓了兩秒的。
而後咱們在看日誌
如今裏面就會有內容了,以下圖
第二行告訴咱們sleep.php腳本慢了,第三行說是這個腳本的第3行慢了。
咱們能夠看一下這個腳本的第三行是什麼,以下圖正是咱們設定的休眠2秒。
12.23 open_basedir
open_basedir以前咱們也介紹過,若是服務器有多個網站,那麼在php.ini裏定義就不合適了,因此要麼在apache虛擬主機配置文件裏定義,要麼在php-fpm裏定義,那麼咱們能夠針對每個池子定義open_basedir,
定義方法只要在www(也能夠是其餘池子)池子文件里加上,而後另起一行(這裏的網站必定要寫www這個文件對應的網站,上圖並非標準答案),如在加上它。而後檢查錯誤以後從新加載,而後就能夠訪問了。
咱們也能夠看一下它的錯誤日誌,咱們先把裏改爲off關掉,(正常都是關閉的,由於不能讓別人經過瀏覽器看到錯誤信息)而後咱們定義一下錯誤日誌路徑,(把原來的註釋一下,而後另起一行)
還要定義日誌級別(這裏咱們定義成全部,咱們把原來的註釋一下,而後另起一行)
而後建立一下指定的錯誤日誌路徑文件
而後咱們故意把在www.conf裏定義的後面的網站改爲其餘網站
而後檢查錯誤從新加載,而後訪問一下就生成了錯誤日誌,而後咱們能夠看一下錯誤日誌
12.24 php-fpm進程管理
php-fpm進程管理就是php-fpm配置文件裏,如www.conf裏選中的幾行。
第一行表示你的進程以什麼樣的形式啓動,dynamic是動態,只有是動態的時候下面的所有參數才生效,若是改爲static那麼只有下面一條生效,也就是說啓動的時候就一下生成50個。
dynamic動態時,下面20結尾的一行意思是默認啓動20個,請求多的時候會增多,可是空閒的時候多於35會自動減小,下面5結尾的一行意思是最低很多於5個,500的一行意思是每個子進程處理的請求數是500次,達到這個值就會自動退出。
固然這些參數後面的數字都是能夠改的。
咱們能夠改一下,而後從新加載php-fpm,而後能夠查看一下網站的進程數: