「10万クライアント環境に耐える高性能」、三菱UFJインフォメーションテクノロジーがWebSocketの性能検証で手応え──Oracle WebLogic Server 12c Forum 2014レポート

Oracle Java & Developers編集部
2014-03-03 11:00:00
  • このエントリーをはてなブックマークに追加

「10万クライアント環境でも十分使える」──比較検証でWebSocketの有効性を確認

 黒田氏らは今回の性能検証にあたり、WebSocketでは他の技術と比較して、特に「ネットワーク・リソース」と「JVMリソース、OSリソース」の節約が実証できるとの仮説を立てていた。

 検証の結果、前者のネットワーク・リソースについては、Cometと比べて約半分のリソース消費に抑えられることが確認できた。一方のポーリングは、クライアントが定期的にリクエストを送信し、準リアルタイムに処理を行うという特性を持つ。そのため、通信数そのものが少なく、今回のシナリオでは、よりリアルタイムに近い処理を行う他の技術との比較は行えなかったという。

 また、JVMリソース、OSリソースについては、WebSocketがステートフルであることから、ステートレスなHTTPをベースにした他の技術と比べて、メモリ・コストとCPUコストを削減できるとの予測を立てていた。実際の検証でも、WebSocketでのGCの回数は他の技術と比べて10分の1程度となり、リクエスト処理のコストも低いことが確認できた。

 「今回の検証により、WebSocketを使えば、検証基盤相当のスペックで、当社の要求水準である10万クライアントの同時接続を充足することが確認できました。また、他の技術と比較しても、CPU、ネットワーク、JVM上のメモリ管理の観点から、WebSocketが高い性能を持つことがわかりました。さらに、大量の通信処理を行うという特性上、今後発生しうるボトルネックとして、NICとの送受信にかかるCPU負荷に注意すべきことも明らかになりました」(黒田氏)

アプリケーション・サーバの違いでWebSocketの性能は変わるのか?

 最後に黒田氏は、参考情報として、アプリケーション・サーバの違いによりWebSocketの性能が変わるのかどうかを検証した結果を紹介した。これは、オープンソースのアプリケーション・サーバである「GlassFish 4」のWebSocket実装について、その性能をテストしたものだ。

 「この検証では、アプリケーション・サーバをOracle WebLogic Server 12cからGlassFish 4に変え、その他の検証環境やチューニング項目は変えずに、先のテストと同じWebSocket版プログラムを動作させてみました。アプリケーション・サーバの違いが、WebSocketの性能にどう影響するのかを知りたかったのです」(黒田氏)

 GlassFish 4上でWebSocketのプログラムを動かした際のCPUリソース消費量の変化は、次のようになった。

検証結果

 グラフを見ると、3万クライアントが同時接続した辺りでCPU利用率が大きく跳ね上がり、4万クライアントでは利用率が極端に低下している。4万クライアント接続時のJVMの状況を診断ツール(Java Flight RecorderとJava Mission Control)で確認すると、ThreadPoolの同期がボトルネックとなって大量の接続待ちが生じていることがわかったという。

 これらの結果から黒田氏らは、今回のシナリオであれば、GlassFish 4は2万クライアント程度までなら対応可能と判断したようだ。

 「GlassFish 4では、クライアントからのリクエスト割り当て部分がシングル・スレッドでしか動作しないため、大量のリクエストに対して効率的にCPUリソースを割り当てることが難しいようです。一方、Oracle WebLogic Server 12cはマルチスレッドを十分に考慮した実装となっており、大量のリクエストに対してもCPUリソースを最大限に活用できるのでしょう」(黒田氏)

 以上、ここでは三菱UFJインフォメーションテクノロジーが日本オラクルとともに実施したWebSocketの性能検証の結果を紹介した。この結果から、10万ものクライアントが接続する極めて大規模なWebアプリケーション環境において、WebSocketがクライアント/サーバ間のリアルタイムなプッシュ配信を実現する技術として極めて有望であることがおわかりいただけただろう。おそらくWebSocketは、企業システムのみならず、HTML5をベースにしたモバイル・アプリケーションやゲームなどの領域でも効果を発揮する。その適用に関心を持たれた方は、まず無償で利用できるOracle WebLogic Server 12c開発ライセンスを使い、WebSocketの実力をお試しいただきたい。

【資料ダウンロード】

Oracle WebLogic Server 12c Forum 2014における三菱UFJインフォメーションテクノロジーの講演資料は、下記のリンク先よりダウンロードできます。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]