Sun Java System Application Server 9.1 配備計画ガイド

第 4 章 配備のためのチェックリスト

この付録では、Application Server を使用した評価および本番運用を始めるためのチェックリストを示します。

配備のためのチェックリスト

表 4–1 チェックリスト

コンポーネント/機能

説明 

アプリケーション

配備するアプリケーションについて、次の要件を決定します。 

ハードウェア

  • HADB ノードのホストには、同じ種類のハードウェアを使用します。

  • 必要なハードディスク領域およびメモリー容量が備わっています。

  • サイジングの演習を使用して、配備の要件を識別します。

    詳細は、『Sun Java System Application Server 9.1 リリースノート』を参照してください。

オペレーティングシステム

ネットワークインフラストラクチャー

  • シングルポイント障害を識別して対処します。

  • NIC およびその他のネットワークコンポーネントが正しく設定されていることを確認します。

  • ttcp ベンチマークテストを実行し、スループットが要件または期待値を満たしているかどうかを調べます。

  • HADB ノードが正しくインストールされるように、必要に応じて rsh/ssh を設定します。

    詳細は、『Sun Java System Application Server 9.1 Installation Guide』を参照してください。

バックエンドおよびその他の外部データソース

その分野の専門家またはベンダーの協力を得て、これらのデータソースが適切に設定されていることを確認します。 

システムの変更/設定

  • パフォーマンステストまたはストレステストを実行する前に、/etc/system および Linux でこれに相当するファイルの変更が完了していることを確認します。

  • TCP/IP 設定の変更が完了していることを確認します。

  • システムのデフォルトでは、多くのサービスが事前に設定されています。これらすべてのサービスが実行のために必要とは限りません。システムリソースを節約するために、必要でないサービスは無効にします。

  • Solaris では、Setoolkit を使用してシステムの動作を調べます。出現したフラグをすべて解決します。

    詳細は、『Sun Java System Application Server 9.1 Performance Tuning Guide』を参照してください。

Application Server および HADB のインストール

HADB の設定

  • HADB データデバイスのサイズを設定します。

  • DataBufferPoolSize を定義します。

  • LogBufferSize を定義します。

  • InternalBufferSize を定義します。

  • NumberOfLocks を設定します。

  • 各種の Application Server コンポーネントに対し、最適なタイムアウト値を設定します。

  • ファイルシステム上に、HADB ノードの物理レイアウトを作成します。

    詳細は、『Sun Java System Application Server 9.1 高可用性 (HA) 管理ガイド』「HADB の設定」を参照してください。

Application Server の設定

  • ログ: アクセスログのローテーションを有効にします。

  • 適切なログレベルを選択します。通常は WARNING が適切です。

  • 管理コンソールを使用して Java EE コンテナを設定します。

  • 管理コンソールを使用して HTTP リスナーを設定します。

  • 管理コンソールを使用して ORB スレッドプールを設定します。

  • ネイティブコードを必要とする Type2 ドライバまたは呼び出しを使用している場合、LD_LIBRARY_PATH に mtmalloc.so が指定されていることを確認します。

  • 適切な持続性の範囲および頻度を使用しており、これらが個別の Web/EJB モジュールでオーバーライドされないことを確認します。

  • SFSB の重要なメソッドのみがチェックポイント設定されることを確認します。

    チューニングの詳細は、『Sun Java System Application Server 9.1 Performance Tuning Guide』を参照してください。

    設定の詳細は、『Sun Java System Application Server 9.1 管理ガイド』を参照してください。

ロードバランサの設定

  • Web Server がインストールされていることを確認します。

  • Web Server のロードバランサプラグインがインストールされていることを確認します。

  • パッチチェックが無効なことを確認します。

  • KeepAliveQuery パラメータの値を小さくします。負荷の低いシステムでは、この値が小さいほど待ち時間が短縮されます。負荷の高いシステムでは、この値が大きいほどスループットが高くなります。

    詳細は、『Sun Java System Application Server 9.1 Performance Tuning Guide』「Keep Alive」を参照してください。

Java 仮想マシンの設定

  • 最初は、最小および最大のヒープサイズを同じ値に設定し、各インスタンスには 1G バイト以上を設定します。

  • 詳細は、 Java Hotspot VM Options を参照してください。

  • Application Server の複数のインスタンスを実行するときは、プロセッサセットの作成を検討し、Application Server をそのセットにバインドします。これは、古い世代のスイープに CMS コレクタが使用される場合に効果的です。

ロードバランサのタイムアウト設定

  • Response-time-out-in-seconds - Application Server インスタンスが正常でないと宣言するまでにロードバランサが待機する時間。この値は、アプリケーションの応答時間に基づいて設定します。この値が大きすぎると、Web Server およびロードバランサプラグインは、Application Server インスタンスが正常でないと記録するまで長時間待機します。この値が小さすぎる場合に Application Server の応答時間がこのしきい値を超えると、インスタンスが正常でないと誤って記録されることになります。

  • Interval-in-seconds - インスタンスが正常に戻ったかどうかを確認するために、正常でないインスタンスをチェックする間隔 (秒)。この値が小さすぎると、ロードバランサプラグインから Application Server インスタンスへの不必要なトラフィックが発生します。値が大きすぎると、正常に戻ったインスタンスへの要求のルーティングが遅れます。

  • Timeout-in-seconds - 健全性検査要求に対して応答が取得される間隔。健全性検査が確実に成功するように、クラスタ内のシステム間のトラフィックに基づいてこの値を調整します。

    詳細は、『Sun Java System Application Server 9.1 高可用性 (HA) 管理ガイド』の第 5 章「HTTP 負荷分散の設定」を参照してください。

HADB のタイムアウト設定

  • sql_client_timeout - アイドル状態のクライアントに対する SQLSUB の待ち時間。たとえば、ログオンしたクライアントは何らかの要求を送信したあと、ユーザー入力を待機します。アイドル状態が 30 分を超えたクライアントは死んでいるものとみなされ、セッションは終了されます。この値を小さく設定しすぎると、SQL セッションが完了する前に終了させてしまう可能性があります。この値を大きく設定しすぎると、アイドル状態ではないがすでに終了している SQL セッションがリソースを占有することがあります。その結果として、ほかの SQL クライアントのログオンが妨げられる可能性があります。この変数を調整するときは、nsessions の設定も考慮します。HADB の JDBC 接続プールの steady-pool-size が max-pool-size よりも大きい場合、idle-timeout-in-seconds を sql_client_timeout よりも小さく設定して、HADB が接続を閉じる前に Application Server 自体が接続を閉じるように設定できます。デフォルト値は 1800 秒です。

  • lock_timeout - トランザクションがデータへのアクセスを待機する最大時間 (ミリ秒)。この時間を超過すると、トランザクションは「The transaction timed out.」というエラーメッセージを生成します。このようなタイムアウトは、ほかのトランザクションが保持しているロック (デッドロック) を待機するトランザクションが原因で発生し、サーバー負荷を上昇させます。この値を 500 ミリ秒未満に設定しないでください。サーバーログに「transaction timed out」というメッセージが見つかった場合は、この値を大きくします。ロックのタイムアウト値を設定するには、HADB の JDBC 接続プールに <property name=lockTimeout value="x"\> というプロパティーを追加します。デフォルト値は 500 ミリ秒です。

  • Querytimeout - クエリーの実行を HADB が待機する最大時間 (ミリ秒)。クエリーのタイムアウトを示す例外がサーバーログに頻繁に記録されている場合は、この値を大きくすることを検討します。この値を設定するには、HADB の JDBC 接続プールに <property name=QueryTimeout value="x"\> というプロパティーを追加します。デフォルト値は 30 秒です。

  • loginTimeout - クライアントが HADB へのログインを待機する最大時間 (秒)。この値を設定するには、HADB の JDBC 接続プールに <property name=loginTimeout value="x"\> というプロパティーを追加します。デフォルト値は 10 秒です。

  • MaxTransIdle - クライアントに応答を送信してから次の要求を受信する間に、トランザクションがアイドル状態でいられる最大時間 (ミリ秒)。この値を変更するには、HADB の JDBC 接続プールに <property name=maxtransIdle value="x"\> というプロパティーを追加します。デフォルト値は 40 秒です。

    詳細は、『Sun Java System Application Server パフォーマンスチューニングガイド』を参照してください。

Application Server のタイムアウト設定

  • Max-wait-time-millis - プールからの接続取得を待機し、超過した場合に例外をスローする時間。デフォルトは 6 秒です。持続されるデータのサイズが 50K バイトを超える高負荷システムでは、この値の変更を検討します。

  • Cache-idle-timeout-in-seconds - 非活性化されるまでに EJB がキャッシュ内でアイドル状態でいられる時間。エンティティー Bean およびステートフルセッション Bean のみに適用されます。

  • Removal-timeout-in-seconds - EJB が非活性化状態 (バックアップストア内でアイドル状態) にとどまる時間。デフォルト値は 60 分です。この値は、SFSB フェイルオーバーの必要性に基づいて調整します。

これらすべての値を調整するときは、HADB の JDBC 接続プールの max-wait-time-in-millis の設定に注意を払います。詳細は、『Sun Java System Application Server 9.1 高可用性 (HA) 管理ガイド』「JDBC 接続プールの設定」を参照してください。

VM ガベージコレクション (GC) のチューニング

ガベージコレクションが 4 秒以上一時停止すると、セッション状態を HADB に持続する際に一時的な問題の原因となる可能性があります。この問題を避けるには、VM ヒープを調整します。データ持続の失敗を 1 回も許容できない場合や、システムが高負荷状態でないときは、CMS コレクタまたはスループットコレクタを使用します。 

これらのコレクタを有効にするには、次のオプションを追加します。 

<jvm-options>-XX:+UseConcMarkSweepGC</jvm-options>

このオプションはスループットを低下させる場合があります。