2016-03-23 5 views
0

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印刷メッセージが表示されます。

答えて

0

たとえば、verticle(スレッド)インスタンスの数を指定できます。 DeploymentOptionsのコンフィグレーションhttp://vertx.io/docs/vertx-core/java/#_specifying_number_of_verticle_instances

1台のマシンで60kを超える接続を作成できたため、接続の平均時間は1秒未満でした。それはあなたがプロダクションで期待するケースですか?他のソリューションを比較しようとすると、実行しようとすることができますhttps://github.com/smallnest/C1000K-Servers

0

何かが正しく聞こえません。それは非常に低いパフォーマンスです。 vert.xのようなサウンドは、並列化のために正しく設定されていません。 1つのverticle(スレッド)のみを使用していますか?

Kaazing Gatewayは、最初のWS実装の1つです。デフォルトでは、複数のコアを使用しており、さらにスレッドなどで設定可能です。ユーザーは大規模なIoTデプロイメントにこれを使用しているため、問題はJVMではありません。あなたが興味を持っている場合は は、ここではgithubのレポです:https://github.com/kaazing/gateway

完全な開示:私はKaazing

のために働きます
関連する問題