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

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

「これなら、10万クライアントを相手にしたプッシュ配信型のWebアプリケーションも作れそうだ」──WebSocketの性能検証に取り組んできた三菱UFJインフォメーションテクノロジーは、そう手応えを感じた。

三菱UFJフィナンシャル・グループの全支店端末での利用を想定し、10万クライアント環境でWebSocketの性能を検証

三菱UFJインフォメーションテクノロジー ITプロデュース部 主任の黒田雄一氏
三菱UFJインフォメーションテクノロジー ITプロデュース部 主任の黒田雄一氏

 Java EE 7では、リアルタイム性や双方向性が求められるWebアプリケーションにおける通信を効率化するプロトコルとして、HTML5の構成技術の1つであるWebSocketがサポートされた。Oracle WebLogic Server 12cは、このWebSocketにいち早く対応しており、これまでは負荷の高いポーリングや独自技術によって実現されていたプッシュ配信型のWebアプリケーションを、WebSocketを用いて構築することが可能となっている(なお、Oracle WebLogic Server 12cのJava EE 7への完全準拠は2014年内を予定)。

 2014年1月31日に都内で開催された「Oracle WebLogic Server 12c Forum 2014」では、このWebSocketの業務アプリケーションへの適用可能性の検証に日本オラクルとともに取り組んできた三菱UFJインフォメーションテクノロジーにより、性能検証に関する最新の結果が発表された。壇上に立ったのは、同社ITプロデュース部 主任の黒田雄一氏だ。

【資料ダウンロード】

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

 黒田氏らは、Oracle WebLogic Server 12c上でWebSocketを含む複数のプロトコルを使い、最大で約10万クライアントと通信を行うテスト・プログラムを作成。それぞれの性能を調べることで、「10万クライアントとの通信負荷に耐えるリソース量の把握」、「他技術と比べたWebSocketの優位性の確認」、「ボトルネックとなりうる部分の把握」を行った。クライアント数の最大値として設定された「10万」という数は、支店/支社の全端末との間で通信を行うという状況から余裕を持たせて推定したものである。

Oracle WebLogic Server 12c上での性能を、ポーリング、Cometと比較

 性能検証は、次の3つの方式を使ったプログラムをそれぞれ作成し、これに対して実施した。

  • WebSocket(サーバからクライアントに対してリアルタイムかつ軽量にプッシュ配信)
  • 一般的なポーリング(クライアント側から定期的にメッセージ・リクエストを送信)
  • Comet(HTTPを使ったクライアント/サーバ間の疑似リアルタイム通信)

 検証環境の構成は、どのプログラムについても同一となる。CPUにIntel Xeon E5-2690(8コア、2.9GHz)を2基、128 GBのメモリを搭載した「Sun Server X3-2L」上で動作するOracle WebLogic Server 12c(12.1.2 beta)を利用した。サーバ/クライアント間をつなぐネットワークには10Gbイーサネットを使い、ネットワーク・キャパシティの限界がベンチマーク結果に影響を与えないよう配慮している。

検証環境の構成

 また、OSはOracle Linux 6 update 4を、Java環境はJDK 7 Update 40 Early Access Releaseを利用した。いずれも必要最低限のパラメータ調整(TCP接続要求数の拡張、送受信バッファ・サイズの拡張、ヒープサイズやPerm領域の拡張など)だけを行ったという。

 各テスト・プログラムでは、100クライアントで1つのグループを仮想的に作成し、それぞれを1つの支店/支社と想定する。3秒ごとに1グループ当たり10クライアントがランダムに選ばれ、サーバにリクエストを送信。それを受けたサーバは、グループ内の全クライアントに対してデータを一斉に返信する。接続するクライアントの数は1万ずつ増加させ、最終的に10万クライアントとの同時接続を行う。

検証プログラム

 性能検証で比較したのは、それぞれの方式に関する次の項目である。

検証項目

目的

OS情報

プロトコルごとのCPU利用率、メモリ使用量、ネットワーク送受信に関する性能を比較する

JVM情報

Javaのメモリ使用状況、プロトコルごとの比較、負荷原因を確認する

レスポンス・タイム

クライアントへの応答時間と、プロトコルごとの比較、遅延発生の状態を確認する

 黒田氏によれば、各プロトコルの特徴は以下のようになる。

通信技術:WebSocket

特徴

  • クライアント/サーバ間で同時接続するためのプロトコル
  • クライアント/サーバのどちら側からもリクエストの送信が可能であり、効率的なリアルタイム通信を実現
  • ステートフルなプロトコルであり、接続後はデータのやり取りだけを行う。これにより、HTTPと比べてネットワーク・リソースを節約することが可能
WebSocket

通信技術:Comet

特徴

  • HTTP通信により、擬似的にリアルタイム通信を実現
  • Bayeuxプロトコルの仕様により、Webブラウザ/サーバ間で常時2つの接続を確立。それぞれをデータ受信、データ送信に使用する。データ受信用スレッドでは、WebLogicのPubSubServerのメッセージを受け取り、クライアントにプッシュする。またデータ送信用スレッドでは、クライアントからWebブラウザに対してメッセージを送信する
  • ロング・ポーリングという手法を使うため、メッセージの受け取り時とHTTP接続のタイムアウト時に再度、接続処理が行われる
Comet

通信技術:ポーリング

特徴

  • HTTP通信により、準リアルタイムな通信を実現
  • クライアントから定期的にメッセージ・リクエストを送信。レスポンス時間は取得間隔に依存する。今回の検証では3秒間隔でデータを取得。メッセージの有無にかかわらずリクエストを発行する
ポーリング

 それぞれの技術の特性から、WebSocketでは他の2つの通信方式と比較して、同時接続クライアント数が増えた場合でも、CPUやネットワーク・リソース、JVMおよびOSリソースの消費を抑えられると黒田氏らは予想していた。

【資料ダウンロード】

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

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