Javaアプリケーションサーバのクラスタリング機能比較
同期と非同期
同期と非同期
ここまでのテストでは同期、つまり「レプリケーションを実行した後にクライアントへレスポンスを返す」という設定でテストを行いました。
TomcatとJBossでは「クライアントへレスポンスを返した後にレプリケーションを実行する」という非同期レプリケーションが可能です。
この設定の場合、先にレスポンスが返るのでレスポンスタイムの向上が期待できます。しかしその一方で「フェイルオーバーしたサーバの持つセッション情報の同期が取れている」という保証がなくなります。この方式を採用する場合は、パフォーマンス云々よりも、システムに求められる信頼性要件を先に確認すべきでしょう。
この設定を有効にするには、Tomcatの場合「replicationModeをasynchronous」に、JBossの場合「CacheModeをREPL_ASYNC」に変更します。
クライアントにレスポンスを返した非同期レプリケーションでのテスト結果と前述の同期の場合を比較したものが図8〜図15になります。
Tomcatの場合
まずはTomcatの場合を見ていきましょう。

図8:Tomcat同期/非同期、1KB、レスポンスタイム

図9:Tomcat同期/非同期、1KB、スループット

図10:Tomcat同期/非同期、100KB、レスポンスタイム

図11:Tomcat同期/非同期、100KB、スループット
Tomcatでセッションオブジェクトサイズが1KBのケースではわずかに非同期の方が優位ですが、これは誤差の範囲内と考えてよいでしょう。 Tomcatのセッションオブジェクトサイズが100KBのケースでは100ユーザ以降から差がでてきています。逆にいえば高トランザクションかつセッションオブジェクトが大きなアプリケーションでない限り、同期でもパフォーマンス上は問題がないということになります。