機器配置
系統配置:16核24G centos6.5
壓測工具:JMeter
通過調整PHP pool 配置調優
方案一: 單臺機器有兩個進程池,每個進程池300個子進程,共600個子進程
方案二: 單臺機器啓動6個進程池,每個進程池50 個子進程,共300個子進程
方案二每個進程池50子進程數以及6個進程池都是通過壓測獲取到的數值。
方案 | 併發 | TPS | 錯誤率 | 報錯 |
---|---|---|---|---|
方案一 | 5000 | 375 | 39% | upstream time out,no live upstreams while connectiong to upstream |
方案二 | 5000 | 431 | 1.37% | recv() failed(104: connection reset by peer) |
進程池配置
cat www.conf
[www]
user = www
group = www
listen = 127.0.0.1:9004
pm = static
pm.max_children = 50
pm.start_servers = 30
pm.min_spare_servers = 10
pm.max_spare_servers = 40
pm.max_requests = 400
pm.status_path = /status_9004
slowlog = var/log/$pool.log.slow
request_slowlog_timeout = 2
request_terminate_timeout = 2m
PHP相關原理
查了些資料都沒有解釋得通爲何多進程池可以提高併發響應。
可能的情況是每個進程池都有資源隔離,子進程資源隔離,減少消耗。
若集中在某個池,可能會有資源搶奪或其他資源消耗問題?