摘要:首先,我們關注下的運行方式模式始終保持一個固定數量的子進程,這個數由定義,這種方式很不靈活,也通常不是默認的。指的是每個子進程在處理了多少個請求數量之后就重啟。
首先,我們關注下 PHP-FPM 的運行方式:
pm = static模式:
始終保持一個固定數量的子進程,這個數由pm.max_children定義,這種方式很不靈活,也通常不是默認的。
優點是不用動態的判斷負載情況,提升性能;缺點是多占用些系統內存資源。在內存足夠的前提下性能最強
用此模式每天需要設置固定時間重啟php
pm = dynamic模式:
啟動時,會產生固定數量的子進程(由pm.start_servers控制)可以理解成最小子進程數,而最大子進程數則由pm.max_children去控制,OK,這樣的話,子進程數會在最大和最小數范圍中變化,還沒有完,閑置的子進程數還可以由另2個配置控制,分別是pm.min_spare_servers和pm.max_spare_servers,也就是閑置的子進程也可以有最小和最大的數目,而如果閑置的子進程超出了pm.max_spare_servers,則會被殺掉。
pm = ondemand模式:
這種模式和pm = dynamic相反,把內存放在第一位,他的工作模式很簡單,每個閑置進程,在持續閑置了pm.process_idle_timeout秒后就會被殺掉,有了這個模式,到了服務器低峰期內存自然會降下來,如果服務器長時間沒有請求,就只會有一個php-fpm主進程,當然弊端是,遇到高峰期或者如果pm.process_idle_timeout的值太短的話,無法避免服務器頻繁創建進程的問題,因此pm = dynamic和pm = ondemand誰更適合視實際情況而定。
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 方式。
先把 max_childnren 設置成一個比較大的值。
穩定運行一段時間后,觀察 php-fpm 的 status 里的 max
active processes 是多少
然后把 max_children 配置比它大一些就可以了。
pm.max_requests:指的是每個子進程在處理了多少個請求數量之后就重啟。
這個參數,理論上可以隨便設置,但是為了預防內存泄漏的風險,還是設置一個合理的數比較好
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40060.html
摘要:首先,我們關注下的運行方式模式始終保持一個固定數量的子進程,這個數由定義,這種方式很不靈活,也通常不是默認的。指的是每個子進程在處理了多少個請求數量之后就重啟。 首先,我們關注下 PHP-FPM 的運行方式:pm = static模式: 始終保持一個固定數量的子進程,這個數由pm.max_children定義,這種方式很不靈活,也通常不是默認的。優點是不用動態的判斷負載情況,提升性能;...
摘要:是用于管理進程池的軟件,用于接收和處理服務器的請求。這個兩個設置默認是關閉的,建議開啟,進程池配置中有一個的區域,意為進程池,通常建議一個應用使用一個進程池。配置文件有默認名為的配置內容。總結沒有固定的配置,要根據實際情況設置。 PHP-FPM 是用于管理 PHP 進程池的軟件,用于接收和處理 Web 服務器的請求。PHP-FPM 會創建一個主進程,控制何時以及如何把 HTTP 請求轉...
摘要:等平臺平臺由于我開發以為主,所以就用的環境配置來學習。啟動進程的用戶和用戶組,進程運行的用戶必須要設置。模式模式,表示啟動進程是動態分配的,隨著請求量動態變化的。 centos等linux平臺 /usr/local/php/php /usr/local/php/etc/php.ini /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-...
摘要:等平臺平臺由于我開發以為主,所以就用的環境配置來學習。啟動進程的用戶和用戶組,進程運行的用戶必須要設置。模式模式,表示啟動進程是動態分配的,隨著請求量動態變化的。 centos等linux平臺 /usr/local/php/php /usr/local/php/etc/php.ini /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-...
閱讀 1226·2023-04-25 15:53
閱讀 2101·2021-11-19 09:40
閱讀 3488·2021-10-11 10:59
閱讀 2066·2019-08-30 15:55
閱讀 1955·2019-08-30 15:54
閱讀 2293·2019-08-29 13:03
閱讀 2754·2019-08-28 18:17
閱讀 1510·2019-08-27 10:51