您好,登錄后才能下訂單哦!
在優化PHP的進程數的時候我們首先要了解我們服務器執行一個php使用的內存
1: 查詢一個php占用的內存方法
pmap $(pgrep php-fpm | head -1)
我這里查詢到的是
00002ba5d0bec000 4K rw-s- /dev/zero (deleted)
00002ba5d0bed000 4K rw-s- /dev/zero (deleted)
00007fffc568b000 80K rwx-- [ stack ]
00007fffc569f000 4K rw--- [ anon ]
00007fffc57fd000 12K r-x-- [ anon ]
ffffffffff600000 8192K ----- [ anon ]
total 309548K
大概30MB的樣子
我本身機器內存是32G,那么理論上計算最大能承受php的并發是 32G/30MB=1092個
那么如果除去系統跟其他軟件的使用內存大概算900個
2 :php-fpm的配置公式:pm.start_servers = min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.max_children的計算方法,本機內存/30兆每個為最大的限定值再適當減小
相關參數解讀:
pm.max_children:靜態方式下開啟的php-fpm進程數量。
pm.start_servers:動態方式下的起始php-fpm進程數量。
pm.min_spare_servers:動態方式下的最小php-fpm進程數量。
pm.max_spare_servers:動態方式下的最大php-fpm進程數量。
針對我的服務器情況調整這幾個值為(當然我這邊是集群所以我啟動300個已經足夠了):
pm.max_children = 300
pm.start_servers = 155
pm.min_spare_servers = 10
pm.max_spare_servers = 300
###################################################
(備注:如果不按這個公式計算做配置多多少少會出現寫問題,比如
seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 0 idle, and 34 total children (這個很明顯是要你調節進程數)
child 1616 exited with code 0 after 619688.718148 seconds from start (一下三個好像都是提示執行超時)
child 14636 exited on signal 15 (SIGTERM) after 269249.100189 seconds from star
request: "POST /test.php") execution timed out (198.776247 sec), terminating
等等類似的報錯
如果是ngixn做的前端代理會出現當后端服務器出現類似問題就會連接失敗提示沒在線的主機等等情況
no live upstreams while connecting to upstream, client
)
####################################################
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。