nginx中php fpm的多程序池

2021-09-02 12:51:47 字數 2080 閱讀 9388

php-fpm多個程序池

說明:每個池使用不同的配置,各個池之間互不干涉。預設情況下,php 只啟用了乙個池,所有請求均在這個池中執行。一旦某些請求出現擁堵之類的情況,那麼很可能會連累整個池出現問題;如果啟用多個池,那麼可以把請求分門別類放到不同的池中執行,此時如果某些請求出現擁堵之類的情況,那麼只會影響自己所在的池,從而控制故障的波及範圍。

設定多個程序池,每個程序池分配不同的站點,可以做到乙個站占用資源過多導致其它站也不能訪問的尷尬情況。這使得**可以更好的執行,如果某個站點受到少量cc攻擊,也不至於拖跨所有的站點

第一步:php-fpm的配置:

在php-fpm.conf中預設只有[www]這乙個pool(程序池),假設如果需要新增乙個叫ajia的程序池,可以新增下面配置:(這裡的配置可以自行增減,但是[ajia]的字眼是必須有的)

[ajia]    

user=nobody  ;可以使用別的使用者、使用者組

group=nobody

;listen=127.0.0.1:9001 ;可以使用tcp或者unix socket的方式,但是必須區別於其他池的配置,比如tcp的埠不能一樣,socket的檔案不能一樣

listen = /dev/shm/php-fpm0.socket 

pm=dynamic  ;當pm=dynamic,pm.max_children不使用,但是值也一定要存在,當pm=static,只使用pm.max_children

pm.max_children=10

pm.start_servers=2 

pm.min_spare_servers=1 

pm.max_spare_servers=10 

pm.process_idle_timeout=15

第二步:nginx中配置:

在對應的fastcgi模組配置中的fastcgi_pass的值設定成新增的ajia的程序池

fastcgi_pass unix:/dev/shm/php-fpm0.socket;

或者fastcgi_pass  127.0.0.1:9001;

最後:重啟nginx和php-fpm之後生效,使用 ps -ef | grep php-fpm 可以檢視到會出現2個不同的程序池的fpm程序

一般不會把fastcgi_pass定義到特定的某乙個程序池中,而是定義到乙個upstream上游伺服器集合中,這個upstream已經將不同的php-fpm程序池包含了,設定如下:

在http配置塊中新增upstream:

upstream fzjh{

server unix:/dev/shm/php-fpm0.socket weight=1; #weight設定權重,這個是新增的ajia的程序池

server 127.0.0.1:9000 weight=2; #這個是預設的www的程序池

fastcgi_pass的值修改為fzjh即可,這樣每次的php-fpm處理連線時候會輪詢不同的程序池,哪怕其中乙個程序池掛掉了,也不會影響其他池的php程序

上面這種方式的程序池是基於php-fpm本身的效果,用乙個php-fpm的master程序帶動,另一種方式是起多個php-fpm的master程序,這個多個master程序對應的連線nginx方式不同(socket檔案或者埠不同)

第一步:使用多個php-fpm配置檔案,例如使用php-fpm1.conf、php-fpm2.conf

php-fpm1.conf中的listen配置為unix:/dev/shm/php-fpm1.socket,其他的配置看情況配置

php-fpm2.conf中的listen配置為unix:/dev/shm/php-fpm2.socket

第二步:啟動2個php-fpm的master程序,通過-y帶上php-fpm配置檔案的形式:

/usr/local/php/sbin/php-fpm -y /usr/local/php/etc/php-fpm1.conf

/usr/local/php/sbin/php-fpm -y /usr/local/php/etc/php-fpm2.conf

重啟nginx和php-fpm後,使用 ps -ef | grep php-fpm 可以檢視到2個不同的master,這樣就可以了

nginx中php fpm的socket是什麼型別

nginx和fastcgi的通訊方式有兩種,一種是tcp 一種是unix socket tcp使用的是 127.0.0.1 9000埠,將fastcgi pass引數修改為127.0.0.1 9000 unix socket 使用套接字 dev shm php cgi.sock,兩個程序引用同乙個s...

nginx和php fpm的配置

一 nginx 配置檔案 nginx.conf 原則 woker程序數與cpu核數一致。master程序用以管理woker程序,高併發可以考慮woker程序設定提高為cpu核數 2 引數 worker processes 1 原因 nginx作為 是提交請求給php fpm的,並沒有涉及到io 即讀...

Nginx呼叫遠端php fpm

在nginx伺服器的情況下,當我們輸入 http localhost 8080 index.php回車的時候 瀏覽器會將請求傳送給nginx,nginx會根據我們所配置的以.php結尾的php的檔案交給fastcgi location php通過fastcgi pass命令將請求 給fastcgi ...