PHP fpm效能調優

2021-08-29 18:37:44 字數 1618 閱讀 8820

注:公司伺服器配置:2核心8g

設定的引數:php_max_children=1000

tart_servers,min_spare_servers,max_spare_servers分別為400 500 700 感覺還是扛不住

php-fpm.conf有兩個至關重要的引數:

乙個是」max_children」,

另乙個是」request_terminate_timeout」

我的兩個設定的值乙個是」40″,乙個是」900″,但是這個值不是通用的,而是需要自己計算的。

計算的方式如下:

如果你的伺服器效能足夠好,且寬頻資源足夠充足,php指令碼沒有系迴圈或bug的話你可以直接將」request_terminate_timeout」設定成0s。0s的含義是讓php-cgi一直執行下去而沒有時間限制。而如果你做不到這一點,也就是說你的php-cgi可能出現某個bug,或者你的寬頻不夠充足或者其他的原因導致你的php-cgi能夠假死那麼就建議你給」request_terminate_timeout」賦乙個值,這個值可以根據你伺服器的效能進行設定。一般來說效能越好你可以設定越高,20分鐘-30分鐘都可以。由於我的伺服器php指令碼需要長時間執行,有的可能會超過10分鐘因此我設定了900秒,這樣不會導致php-cgi死掉而出現502 bad gateway這個錯誤。

而」max_children」這個值又是怎麼計算出來的呢?這個值原則上是越大越好,php-cgi的程序多了就會處理的很快,排隊的請求就會很少。設定」max_children」也需要根據伺服器的效能進行設定,一般來說一台伺服器正常情況下每乙個php-cgi所耗費的內存在20m左右,因此我的」max_children」我設定成40個,20m*40=800m也就是說在峰值的時候所有php-cgi所耗內存在800m以內,低於我的有效記憶體1gb。而如果我的」max_children」設定的較小,比如5-10個,那麼php-cgi就會「很累」,處理速度也很慢,等待的時間也較長。如果長時間沒有得到處理的請求就會出現504 gateway time-out這個錯誤,而正在處理的很累的那幾個php-cgi如果遇到了問題就會出現502 bad gateway這個錯誤。

max_requests即是說每個程序若超過這個數目(跟php程序有一點點關係,關係不大),就自動殺死..我這裡應該設定512的,不過懶得壓力測試了,設定大一點,不過也不要設定過大,是個結構體,沒測試過,接近8k到9k大小.網上動輒設定100k,有點浪費記憶體了.乙個程序浪費大小接近1m.按照網上常用配置的128個程序,大概浪費100m左右.好吧,我承認100m是白菜價,但也別這樣浪費..= =

max_children基本就是程序數,跟nginx的程序沒有想象中的那麼大,因為fpm會自己管理程序(有待考證,起碼我簡單瀏覽了一下原始碼,認為是這個意思).引數不宜設定過大,很佔記憶體,程序的消耗就不用我多說了.

max_children較好的設定方式根據req/s來設定,若程式是 100 req/s的處理能力..最大併發是10k,那麼就設定 100比較好,這是動態來調整的.

不過你若用php 5.3,也可以把style設定為apache-like,那麼設定start_servers,min_spare_servers,max_spare_servers三個引數就可以自動調整

很簡單,具體看配置檔案,這樣的設定之後,在高負載和複雜的php程式會省事一點,畢竟測試req/s是可惡的體力活.

php fpm引數調優

pm dynamic 表示使用哪種程序數量管理方式 dynamic表示php fpm程序數是動態的,最開始是pm.start servers指定的數量,如果請求較多,則會自動增加,保證空閒的程序數不小於pm.min spare servers,如果程序數較多,也會進行相應清理,保證多餘的程序數不多於...

調優 Nginx效能調優

一.nginx優化配置 1.主配置檔案優化 注 部分配置詳解 worker processes 8 nginx程序數,建議按照cpu數目來指定,一般為它的倍數。worker cpu affinity 00000001 00000010 00000100 00001000 00010000 00100...

Spark效能調優 JVM調優

通過一張圖讓你明白以下四個問題 1.jvm gc機制,堆記憶體的組成 2.spark的調優為什麼會和jvm的調優會有關聯?因為scala也是基於jvm執行的語言 3.spark中oom產生的原因 4.如何在jvm這個層面上來對spark進行調優 補充 spark程式執行時 jvm堆記憶體分配比例 r...