PHP FPM效能優化參考

2021-08-08 15:19:20 字數 1480 閱讀 3917

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併發優化

伺服器lnmp環境安裝好後,沒有進行配置優化,就採用的預設配置。最近開始推廣,突然就遇到效能問題了。主要症狀是 1.有時第一次連線的時候很慢,連線上後就很快。2.採用qq登入,會變得很慢。然後其它人訪問也會變得很慢。初步分析原因是 首先排除cpu和記憶體瓶頸的問題 1.預設配置,只啟動了兩個php ...

php fpm優化方法

php fpm優化方法 php fpm存在兩種方式,一種是直接開啟指定數量的php fpm程序,不再增加或者減少 另一種則是開始時開啟一定數量的php fpm程序,當請求量變大時,動態的增加php fpm程序數到上限,當空閒時自動釋放空閒的程序數到乙個下限。這兩種不同的執行方式,可以根據伺服器的實際...

MySql效能優化的前期參考

近期發現mysql占用cpu較高,長期保持在35 80 之間,想做一些優化,先查了一些優化的策略,下述提到的方法暫未實施求證,僅作參考。b 關於mysql 5.0.20及其以前版本效能跳水的說法 b 參考 下圖顯示,當併發越過30時,mysql效能大副下降,先不深究其原因,將其列為效能瓶頸的參考因素...