Workerman支持多少並發
並發概念過於模糊,這裡以兩種可以量化的指標並發連線數和並發請求數來說明。
並發連線數是指伺服器當前時刻一共維持了多少TCP連線,而這些連線上是否有數據通訊並不關注,例如一台訊息推送伺服器上可能維持了百萬的設備連線,由於連線上很少有數據通訊,所以這台伺服器上負載可能幾乎為 0,只要內存足夠,還可以繼續接受連線。
並發請求數一般用QPS(伺服器每秒處理多少請求)來衡量,而當前時刻伺服器上有多少個TCP連線並不十分關注。例如一台伺服器只有10個客戶端連線,每個客戶端連線上每秒有1萬個請求,那麼要求服務端需要至少能支撐10*1萬=10萬每秒的吞吐量(QPS)。假設10萬吞吐量每秒是這台伺服器的極限,如果每個客戶端每秒發送1個請求給伺服器,那麼這台伺服器能夠支撐10萬個客戶端。
並發連線數受限於伺服器內存,一般24G內存workerman伺服器可以支持大概120W並發連線。
並發請求數受限於伺服器CPU處理能力,一台24核workerman伺服器可以達到45W每秒的吞吐量(QPS),實際值根據業務複雜度以及程式碼品質有所變化。
注意
高並發場景必須安裝event擴展,參考安裝配置章節。另外需要優化Linux內核,尤其是進程打開文件數限制,請參考附錄內核調優章節。
壓測數據
數據來自第三方權威壓測機構 techempower.com 第20輪壓測
https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=db&l=zik073-sf
伺服器配置:
Total Cores 14, Total Threads 28, 32 GB of memory, Dedicated Cisco 10-gigabit Ethernet switch
業務邏輯:
帶數據庫查詢業務,數據庫pgsql,php8+jit
QPS為39萬+