Workermanはどれだけの同時接続をサポートするか
同時接続の概念はあいまいであるため、ここでは量的に評価できる2つの指標、同時接続数と同時リクエスト数を使って説明します。
同時接続数は、サーバーが現在維持しているTCP接続の総数を指しますが、それらの接続でデータが通信されているかどうかは関係ありません。例えば、メッセージプッシュサーバーでは、百万のデバイス接続を維持している可能性がありますが、接続上ではほとんどデータが通信されていないため、そのサーバーの負荷はほぼ0です。メモリが十分であれば、さらに接続を受け入れることができます。
同時リクエスト数は一般的にQPS(サーバーが1秒間に処理するリクエスト数)で測定され、サーバー上のTCP接続の数はそれほど関心を持たれません。例えば、1台のサーバーに10のクライアント接続があり、各クライアント接続上で毎秒1万のリクエストがある場合、サーバーは少なくとも10*1万=10万毎秒のスループット(QPS)を支えなければなりません。仮に10万のスループットがこのサーバーの限界であるとすると、各クライアントが毎秒1つのリクエストをサーバーに送信する場合、このサーバーは10万のクライアントを支えることができます。
同時接続数はサーバーのメモリに制限され、一般的に24GメモリのWorkermanサーバーは約120万の同時接続をサポートできます。
同時リクエスト数はサーバーのCPU処理能力に制限され、24コアのWorkermanサーバーは45万毎秒のスループット(QPS)に達することができます。実際の値はビジネスの複雑さやコードの品質によって異なることがあります。
注意
高い同時接続のシナリオでは、event拡張をインストールする必要があります。インストールと設定の章を参照してください。また、特にプロセスのオープンファイル数の制限に関して、Linuxカーネルを最適化する必要があります。これについては、付録のカーネルチューニングの章を参照してください。
負荷テストデータ
データは第三者の権威ある負荷テスト機関 techempower.com の第20ラウンドの負荷テストから得たものです。
https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=db&l=zik073-sf
サーバー構成:
総コア数 14, 総スレッド数 28, メモリ 32 GB, 専用Cisco 10ギガビットイーサネットスイッチ
ビジネスロジック:
データベースクエリを伴うビジネス、データベースpgsql、php8+jit
QPSは39万+
