スタンドアロン環境の WebSphere Real Time

WebSphere® eXtreme Scale のもとで WebSphere Real Time を使用することができます。 WebSphere Real Time を使用可能にすることにより、ガーベッジ・コレクションはより予測可能になり、スタンドアロン eXtreme Scale 環境でのトランザクションの応答時間とスループットは安定した一貫性のあるものになります。

WebSphere Real Time の利点

WebSphere eXtreme Scale は、各トランザクションに関連付けられる多数の一時オブジェクトを作成します。 これらの一時オブジェクトは、要求、応答、ログ・シーケンス、およびセッションを処理します。 WebSphere Real Time がない場合は、トランザクションの応答時間が数百ミリ秒まで増大することがあります。 しかし、WebSphere eXtreme Scale のもとで WebSphere Real Time を使用すると、ガーベッジ・コレクションの効率が上がり、応答時間がスタンドアロン構成応答時間の 10% に減少します。

WebSphere Real Time の使用可能化

Install eXtreme Scale を実行するコンピューターに、WebSphere Real Time とスタンドアロン WebSphere eXtreme Scale をインストールしてください。 JAVA_HOME 環境変数が標準 Java SE Runtime Environment (JRE) を指すように設定してください。

インストールされた WebSphere Real Time を ポイントするよう、JAVA_HOME 環境変数を設定します。その後、次のようにして WebSphere Real Time を 使用可能にします。

  1. 次の行からコメントを除去することによって、スタンドアロン・インストール objectgridRoot/bin/setupCmdLine.sh | .bat ファイルを編集します。

    WXS_REAL_TIME_JAVA="-Xrealtime -Xgcpolicy:metronome -Xgc:targetUtilization=80"

  2. ファイルを保存します。

これで、WebSphere Real Time が 使用可能になります。WebSphere Real Time を使用不可にしたい場合は、同じ行にコメントを戻します。

ベスト・プラクティス

WebSphere Real Time によって、eXtreme Scale トランザクション の応答時間はより予測可能なものになります。 その結果、eXtreme Scale トランザクション の応答時間の偏差は、WebSphere Real Time を使用すると、 デフォルトのガーベッジ・コレクターを使用する標準 Java と比較して、大幅に改善されます。 eXtreme Scale とともに WebSphere Real Time を使用可能にすることは、安定度および応答時間が重要なアプリケーションを使用している場合に最適です。

このセクションで説明するベスト・プラクティスは、WebSphere eXtreme Scaleをより効率的にするチューニング方法と、予期される負荷に応じたコード例を示します。

  • アプリケーションおよびガーベッジ・コレクター用のプロセッサー使用量を正しく設定する。

    WebSphere Real Time にはプロセッサー使用量を制御する機能があり、ガーベッジ・コレクションがアプリケーションに与える影響を制御し、最小化することができます。 -Xgc:targetUtilization=NN パラメーターを使用して、20 秒ごとにアプリケーションが使用するプロセッサーの NN パーセントを指定します。 WebSphere eXtreme Scale のデフォルトは 80% ですが、それとは異なる値 (例えば 70 など、ガーベッジ・コレクターにより多くのプロセッサー容量を提供する値) を設定するように objectgridRoot/bin/setupCmdLine.sh ファイル内のスクリプトを変更することができます。 使用するアプリケーション のプロセッサー負荷を 80% 未満に保つことができる十分な数のサーバーをデプロイします。

  • ヒープ・メモリーのサイズを大きく設定する。

    WebSphere Real Time は正規の Java より多くのメモリーを使用するため、大きいヒープ・メモリーを持つ WebSphere eXtreme Scale を計画して、カタログ・サーバーおよびコンテナーを開始する際、ogStartServer コマンドの –jvmArgs –XmxNNNM パラメーターでヒープ・サイズを設定してください。 例えば、–jvmArgs –Xmx500M パラメーターを使用してカタログ・サーバーを開始し、適切なメモリー・サイズを使用してコンテナーを開始します。 メモリー・サイズは、JVM ごとに予想データ・サイズの 60-70% に設定することができます。 この値を設定しないと、OutOfMemoryError エラーが発生するおそれがあります。 さらに、必要ならば、–jvmArgs –Xgc:noSynchronousGCOnOOM パラメーターを使用して、JVM がメモリー不足になったときの非決定的振る舞いを回避することができます。

  • ガーベッジ・コレクションのスレッドを調整する。

    WebSphere eXtreme Scale は、各トランザクションおよびリモート・プロシージャー・コール (RPC) スレッドに関連付けられる多数の一時オブジェクトを作成します。 ご使用のコンピューターに十分なプロセッサー・サイクルがある場合は、ガーベッジ・コレクションに対してパフォーマンスが有益に働きます。 デフォルトのスレッド数は 1 です。 スレッド数は –Xgcthreads n 引数によって変更できます。 この引数の推奨値は、コンピューターごとの Java 仮想マシン数を考慮して使用可能となるコアの数です。

  • WebSphere eXtreme Scale のもとで短時間実行されるアプリケーションのパフォーマンスを調整する。

    WebSphere Real Time は、 長時間実行するアプリケーション向けに調整されています。通常、信頼できるパフォーマンス・データを取得するには、WebSphere eXtreme Scale のトランザクションを連続して 2 時間実行する必要があります。 –Xquickstart パラメーターを使用して、短時間実行アプリケーションのパフォーマンスを最適にすることができます。 このパラメーターは、JIT (Just-In-Time) コンパイラーに対して、低レベルの最適化を使用するように指示を出します。

  • WebSphere eXtreme Scale クライアント・キューおよび WebSphere eXtreme Scale クライアント・リレーを最小化する。

    WebSphere eXtreme Scale を WebSphere Real Time と共に使用する主な利点は、信頼性の高いトランザクション応答時間を実現できることです。通常、トランザクション応答時間の偏差について、桁が数桁も違うような改善が 見られます。 キューに入れられたクライアント要求、および他のソフトウェアを経由するクライアント要求リレーは応答時間に影響しますが、それは WebSphere Real Time および WebSphere eXtreme Scale の制御範囲外です。 スレッドおよびソケットのパラメーターを変更して、 顕著な遅延のない安定的かつ平滑な負荷を維持し、キュー項目数を減らすようにする必要があります。

  • WebSphere Real Time スレッド化を使用する WebSphere eXtreme Scale アプリケーションを開発する。

    アプリケーションを変更することなく、信頼性の高い WebSphere eXtreme Scale トランザクション応答時間を実現でき、応答時間の偏差に関して桁が数桁も違うほど改善されます。 トランザクションを処理するユーザー・アプリケーション は、通常の Java スレッドではなく、スレッド優先順位およびスケジューリングの制御に優れた RealtimeThread を使用することで、 スレッド使用の利点をさらに活用できます。

    アプリケーションが 現在は以下のようなコードを含んでいるとします。

    public class WXSCacheAppImpl extends Thread implements WXSCacheAppIF

    必要ならば、このコードを次のもので置き換えることができます。

    public class WXSCacheAppImpl extends RealtimeThread implements WXSCacheAppIF