Workerman 支援多少並發

並發概念太模糊,這裡以兩種可以量化的指標並發連接數並發請求數來說明。

並發連接數是指伺服器當前時刻總共維持了多少 TCP 連接,而這些連接上是否有數據通訊並不關注,例如一台消息推送伺服器上可能維持了百萬的設備連接,由於連接上很少有數據通訊,所以這台伺服器上負載可能幾乎為 0,只要記憶體足夠,還可以繼續接受連接。

並發請求數一般用 QPS(伺服器每秒處理多少請求)來衡量,而當前時刻伺服器上有多少個 tcp 連接並不十分關注。例如一台伺服器只有 10 個客戶端連接,每個客戶端連接上每秒有 1W 個請求,那麼要求伺服器端需要至少能支撐 10*1W=10W 每秒的吞吐量(QPS)。假設 10W 吞吐量每秒是這台伺服器的極限,如果每個客戶端每秒發送 1 個請求給伺服器端,那麼這台伺服器能夠支撐 10W 個客戶端。

並發連接數受限於伺服器記憶體,一般 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 萬+