首頁  >  文章  >  後端開發  >  php一般開多少個行程

php一般開多少個行程

王林
王林原創
2019-09-28 11:55:275152瀏覽

php一般開多少個行程

首先,我們關注下 PHP-FPM 的運作方式:

static :表示在 `php-fpm` 运行时直接 `fork` 出 `pm.max_chindren` 个子进程,
 
dynamic:表示,运行时 `fork` 出 `start_servers` 个进程,随着负载的情况,动态的调整,最多不超过 `max_children` 个进程。

一般推薦用 static。

優點是不用動態的判斷負載情況,提升效能;

缺點是多佔用些系統記憶體資源。

PHP-FPM 子行程數量,是不是越多越好?

當然不是,pm.max_chindren,進程多了,增加進程管理的開銷以及上下文切換的開銷。更核心的是,能並發執行的 php-fpm 進程不會超過 cpu 個數。

如何設置,取決於你的程式碼

如果程式碼是 CPU 計算密集型的,pm.max_chindren 不能超過 CPU 的核心數。如果不是,那麼將 pm.max_chindren 的值大於 CPU 的核心數,是非常明智的。

公式:

在 N 20% 和 M / m 之間。

參數說明:

N 是 CPU 核心數。

M 是 PHP 能利用的記憶體數。

m 是每個 PHP 進程平均使用的記憶體數。

適用於 dynamic 方式。

static方式:M / (m * 1.2)

當然,還有一種保險的方式,來設定 max_children。適用於 static 方式。

1、先把 max_childnren 設定成一個比較大的值。

2、穩定運行一段時間後,觀察 php-fpm 的 status 裡的 max active processes 是多少

3、然後把 max_children 配置比它大一些就可以了。

pm.max_requests:指的是每個子程序在處理了多少個請求數量之後就重新啟動。這個參數,理論上可以隨便設置,但是為了預防記憶體洩漏的風險,還是設定一個合理的數比較好。

推薦影片教學:PHP影片教學

#

以上是php一般開多少個行程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn