Webソケット経由でJavaサーバーに接続する多くのクライアントからデータを取得する必要があります。WebSocketのスループットを向上させる方法
Webソケットの実装がたくさんあり、私はvert.xを選択しました。 私は、JSONのフレームをテキスト・ジャクソンとそれらを解析し、バック応答を送信するために聞く簡単なデモを行いました。 Jsonパーサはスループットに大きく影響しません。
2人または10人のクライアントで全体の速度が毎秒2.5kになっています。
次に、私はバッファリングを使用しようとしましたが、クライアントはすべての単一の応答を待つのではなく、サーバーからの確認後にメッセージのバッチ(30k - 90k)を送信します。
私はJavaプロセスにCPUボトルネックがあることを知っています.1つのコアが100%使用されています。 平均nodejsクライアントのCPU消費量はわずか5%です。 さえ、1つのクライアントは、サーバーがほぼ全コアを食べるようになります。
桟橋のような他のウェブソケットの実装を試してみる価値はあると思いますか? 複数のコアでvert.xをスケールする方法はありますか?
ログレベルをdebugからinfoに変更した後、私は70kを持っています。デバッグレベルでは、すべてのフレームに対してvert.x印刷メッセージが表示されます。