php-fpm的3種工作模式

php-fpm的3種工作模式

1.dynamic(動態模式)
2.ondemand
3.static 靜態模式

這裏着重說一下 dynamic 和 ondemand 模式。

先來解釋幾個參數:

pm.start_servers 動態模式下是開始時的進程數。
pm.min_spare_servers  閒置狀態時最小進程數
pm.max_spare_servers  閒置狀態時最大進程數
pm.max_children       最大進程數
pm.process_idle_timeout  進程超過時間會被殺掉,單位爲s.

dynamic是動態的, 系統默認選項, 系統爲了最大優化服務器響應的模式
ondemand 特點是 不會有閒置進程,每個進程超過了process_idle_timeout就會被kill掉。

下面做了一個ab壓力測試做2個實驗

1. 先用dynamic和ondemand模式看下max_children的參數。
max_children 爲默認35 如下圖
max_children 設置爲8 如下圖

                     max_children的作用是限制最大進程數。

在這裏插入圖片描述
圖1在這裏插入圖片描述

2. 接着用ondemand模式和dynamic模式下的不同處。
1>. 執行 ab測試。
ab -c 20 -n 1000 http://xxx/

2>. ps -ef|grep php
dynamic max_spare_servers 設爲 16 ,process_idle_timeout設爲12 。下圖1
ondemand max_spare_servers 設爲 16,process_idle_timeout設爲12 。下圖2

dynamic
在這裏插入圖片描述
可以說明 在併發量稍大的情況下, dynamic模式下,測試結束後,仍有max_spare_servers個限制進程。ondemand模式下, 只剩master進程。

在高併發請求時,比如場景爲秒殺的情況下。 dynamic模式在高峯期後會很很多閒置進程造成了浪費。 而ondemand則會因爲時間限制,對某些響應時間長的進程會資源支持不到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章