WebSocketが一番速いアプリケーションサーバはどれだ? : Tomcat、Jetty、Socket.IO/Node.js性能比較 (1/3 ページ)
双方向通信を実現するHTML5関連技術WebSocketを実装した3つのアプリケーションサーバの実装の違い・性能などを徹底検証する。
[高橋栄二,NTTソフトウェア 技術開発センター OSS基盤技術部門 ]
2 0 1 2 年 の 10 月 に W i n d o w s 8 が 発 売 さ れ 、 そ こ に 搭 載 さ れ た I n t e r n e t E x p l o r e r ︵ 以 下 、 IE ︶ 10 で は H T M L 5 の 機 能 が 利 用 で き る よ う に な り ま し た 。 ま た 、 2 0 1 3 年 の 2 月 に W i n d o w s 7 版 の I E 1 0 も リ リ ー ス さ れ 多 く の ユ ー ザ ー が H T M L 5 の 恩 恵 を 受 け ら れ る よ う に な り ま し た 。
H T M L 5 の 機 能 の 多 く は 、 W e b ブ ラ ウ ザ 側 で 実 装 さ れ れ ば 、 H T M L や C S S を 適 切 に 記 述 す る こ と で 利 用 が 可 能 で す 。 し か し 、 今 回 取 り 上 げ る W e b S o c k e t は サ ー バ 側 で も 機 能 の 実 装 が 必 要 で す 。 こ の た め 、 W e b S o c k e t を 利 用 す る 場 合 は W e b ブ ラ ウ ザ だ け で は な く サ ー バ を 選 ぶ 必 要 が あ り ま す 。
W e b S o c k e t そ の も の の 技 術 的 な 解 説 は 、 以 下 の よ う に @ IT の 過 去 記 事 で も 充 実 し て い ま す の で 、 今 回 は W e b S o c k e t を 実 装 し た サ ー バ そ れ ぞ れ の 実 装 の 違 い ・ 性 能 な ど を 見 て い き ま す 。
● 双 方 向 通 信 を 実 現 ! W e b S o c k e t を 使 い こ な そ う
● W e b S o c k e t で 目 指 せ “ リ ア ル タ イ ム W e b ” !
比 較 す る の は 3 つ の サ ー バ で 、 J a v a で 実 装 さ れ た ア プ リ ケ ー シ ョ ン サ ー バ で あ る A p a c h e T o m c a t と J e t t y 、 そ れ に 加 え て 少 々 毛 色 は 異 な り ま す が 、 J a v a S c r i p t を 使 っ て サ ー バ ア プ リ ケ ー シ ョ ン が 記 述 で き る N o d e . j s と N o d e . j s で W e b S o c k e t を 利 用 す る 際 に 利 用 す る フ レ ー ム ワ ー ク で あ る S o c k e t . I O で す 。
以 降 、 各 サ ー バ 製 品 の 性 能 比 較 に つ い て 、 使 用 す る 環 境 、 テ ス ト パ タ ー ン を 説 明 し て い き ま す 。
今 回 利 用 す る サ ー バ と 、 ク ラ イ ア ン ト は 以 下 の 通 り で す 。
各サーバともに頻繁にバージョンアップが行われており、検証を行った時点で利用していた上記のバージョンはすでに古くなっています。その上、Jettyはメジャーバージョンアップ、Node.jsも0.8系から0.10系に最新版が切り替わり、以下の比較結果が、そのまま今のバージョンでも当てはまらないこともあるかと思いますが、その点はご了承ください。
クライアントについては、筆者がJavaでの開発に親しんでいたこともあり、上記のライブラリを利用して作成しています。Tomcat/Jettyは同じクライアントプログラムを使っていますが、Socket.IOは専用のクライアントを作っています。
WebSocketはプロトコル仕様とAPI仕様が別々に作成されており、それぞれ別の団体が仕様策定を行っています。API仕様も、もともとはクライアント側の仕様のみ策定が進められていましたが、サーバ側はJavaのAPI仕様が2012年からJCP(Java Community Process)で策定が進められてきました。
プロトコルは、すでに多くの版を重ねており、版が進むにつれ機能の追加やセキュリティ対応などがされていますので、クライアントとサーバで対応するプロトコルバージョンに違いがあると利用できません。
まずは、このプロトコルについて各サーバの実装状況を解説します。
WebSocketのプロトコルは、IETF(Internet Engineering Task Force)で策定が行われています。クライアントとサーバのハンドシェイクでは、プロトコルヘッダ中の「Sec-WebSocket-Version」を利用して、双方で利用可能なバージョンの確認を行います。この「Sec-WebSocket-Version」はhybi-04(draft-ietf-hybi-theWebSocketprotocol-04)以降設定されるようになっています。
この「Sec-WebSocket-Version」とプロトコルドラフトバージョンの対応は以下の通りです。
Sec-WebSocket-Version
hybi-XX
4
hybi-04
5
hybi-05
6
hybi-06
7
hybi-07
8
hybi-08 - hybi-12
13
hybi-13 - RFC6455
︻ 1 ︼ T o m c a t で の 対 応 状 況
T o m c a t で の W e b S o c k e t 対 応 の 歴 史 は ま だ 浅 く 、 2 0 1 2 年 夏 に リ リ ー ス さ れ た 7 . 0 . 2 7 か ら 対 応 し て い ま す 。 プ ロ ト コ ル も 最 新 の バ ー ジ ョ ン で あ る R F C 6 4 5 5 へ の 対 応 の み と な っ て い ま す 。 こ の た め 、 古 い W e b ブ ラ ウ ザ と の 組 み 合 わ せ で 使 え な い た め 、 注 意 が 必 要 で す 。
︻ 2 ︼ J e t t y で の 対 応 状 況
J e t t y で の W e b S o c k e t 対 応 の 歴 史 は 古 く 2 0 0 9 年 リ リ ー ス の 7 . 0 . 1 か ら 実 装 が 進 め ら れ て お り 、 現 在 ま で に リ リ ー ス さ れ て い る す べ て の プ ロ ト コ ル に 対 応 し て い ま す 。 古 い ブ ラ ウ ザ で サ ポ ー ト さ れ て い た W e b S o c k e t で も 利 用 で き る と こ ろ が 特 徴 で す 。
︻ 3 ︼ N o d e . j s / S o c k e t . I O で の 対 応 状 況
N o d e . j s 上 の フ レ ー ム ワ ー ク で あ る S o c k e t . I O で は h y b i - 0 7 か ら h y b i - 1 6 の プ ロ ト コ ル に 対 応 し て い ま す 。 h y b i - 1 6 の S e c - W e b S o c k e t - V e r s i o n は 13 と な り ま す の で 、 最 新 の プ ロ ト コ ル バ ー ジ ョ ン に 対 応 し て い る こ と に な り ま す 。
こ の よ う に 各 サ ー バ で プ ロ ト コ ル の 対 応 状 況 は 異 な り ま す が 、 最 新 の W e b ブ ラ ウ ザ で あ れ ば R F C 6 4 5 5 に 対 応 し て お り 、 多 く の W e b ブ ラ ウ ザ は 自 動 更 新 に よ り 最 新 版 へ の バ ー ジ ョ ン ア ッ プ を 強 制 す る よ う に な っ て い る た め 、 ど の サ ー バ を 利 用 し て も 問 題 は な い と 思 わ れ ま す 。
次 に A P I 仕 様 へ の 対 応 状 況 で す 。 前 述 の 通 り 、 A P I 仕 様 は ク ラ イ ア ン ト 側 と サ ー バ 側 で 別 に 仕 様 が 策 定 さ れ て い ま す 。 こ こ で は 、 J a v a の A P I 仕 様 に つ い て の み 対 応 状 況 を 見 て い き ま す 。 A P I 仕 様 で あ る J S R 3 5 6 ︵ J a v a T M A P I f o r W e b S o c k e t ︶ は 2 0 1 3 年 4 月 22 日 に F i n a l A p p r o v a l B a l l o t が 完 了 し て い ま す 。
こ の A P I 仕 様 に つ い て は 、 T o m c a t で は 現 在 開 発 中 の T o m c a t 8 か ら 、 J e t t y で は 2 0 1 3 年 3 月 8 日 に リ リ ー ス さ れ た J e t t y 9 か ら サ ポ ー ト さ れ て い ま す 。
J S R 3 5 6 に よ り 、 こ れ ま で サ ー バ ご と に バ ラ バ ラ だ っ た サ ー バ サ イ ド の W e b S o c k e t ア プ リ ケ ー シ ョ ン 構 築 手 段 が 統 一 さ れ 、 よ り 作 り や す く な る こ と と 思 わ れ ま す 。
次 ペ ー ジ で は 、 今 回 テ ス ト 用 に ア プ リ ケ ー シ ョ ン を 作 る に 当 た り 、 は ま っ た 点 、 困 っ た 点 な ど を 記 載 し て い き ま す 。
Copyright © ITmedia, Inc. All Rights Reserved.