Workermanはどれくらいの同時接続をサポートしていますか?

同時接続の概念は非常に曖昧です。ここでは、量的に評価可能な2つの指標、つまり同時接続数同時リクエスト数について説明します。

同時接続数は、サーバーが現在保持しているTCP接続の数を指しますが、これらの接続でデータ通信が行われているかどうかは問題ではありません。例えば、メッセージ送信サーバーでは数百万のデバイス接続が存在するかもしれませんが、ほとんどの接続でデータ通信が行われていないため、このサーバーの負荷はほぼゼロで、メモリが十分あれば接続を引き続き受け入れることができます。

同時リクエスト数は通常、QPS(サーバーが1秒間に処理するリクエスト数)で測定されます。ただし、サーバー上のTCP接続の数はあまり問題ではありません。例えば、サーバーに接続されているクライアントがわずか10人であり、それぞれのクライアントが1万回リクエストを出す場合、サーバーは少なくとも10*1万=10万件の吞吐量(QPS)を処理する必要があります。10万件の吞吐量がサーバーの限界であれば、1秒間に1つのリクエストをサーバーに送信するクライアントが10万人となります。

同時接続数はサーバーのメモリに影響を受け、通常、24Gのメモリを搭載したWorkermanサーバーはおおよそ120万の同時接続をサポートできます。

同時リクエスト数はサーバーのCPU処理能力に影響を受け、24コアのWorkermanサーバーはおおよそ45万の吞吐量(QPS)に達することができますが、実際の値はビジネスの複雑さやコードの品質によって異なります。

注意

高い同時接続のシナリオでは、event拡張をインストールする必要があります。インストールと設定については、付録のカーネルチューニングセクションを参照してください。

ベンチマークデータ

データは第三者の権威あるベンチマーク機関 "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、専用Cisco 10ギガビットイーサネットスイッチ
ビジネスロジック:
データベースクエリを含むビジネスロジック、pgsqlデータベース、PHP8+jit
QPSは39万以上