Cosminexus V11 アプリケーションサーバ システム設計ガイド
目次
用語
索引
前へ
2 / 299
次へ
表紙
前書き
変更内容
はじめに
1. アプリケーションサーバのシステム設計の目的と流れ
1.1 アプリケーションサーバのシステム設計の目的
1.2 システム設計の流れ
1.2.1 オンライン処理を実行するアプリケーション(J2EEアプリケーション)の場合
1.2.2 バッチ処理を実行するアプリケーション(バッチアプリケーション)の場合
2. システム設計の準備
2.1 システム設計を始める前に決めておくこと
2.2 業務の種類を明確にする
2.3 使用する機能を検討する(オンライン処理を実行する場合)
2.3.1 プロセス構成
2.3.2 J2EEサーバの構成
2.3.3 J2EEアプリケーションとJ2EEコンポーネント
2.3.4 J2EEコンテナ
2.3.5 J2EEサービス
2.3.6 J2EEリソース
2.3.7 JPAプロバイダ
2.3.8 コンテナ拡張ライブラリ
2.4 使用する機能を検討する(バッチ処理を実行する場合)
2.4.1 プロセス構成
2.4.2 バッチサーバの構成
2.4.3 バッチアプリケーション
2.4.4 バッチサービス
2.4.5 J2EEサービス
2.4.6 J2EEリソース
2.4.7 コンテナ拡張ライブラリ
2.5 システムの目的に応じたアプリケーションの構成を決める(オンライン処理を実行する業務の場合)
2.5.1 動作させるJ2EEアプリケーションの検討
2.5.2 使用するプロセスの検討と必要なソフトウェアの準備
2.6 システムの目的に応じたアプリケーションの構成を決める(バッチ処理を実行する業務の場合)
2.6.1 動作させるバッチアプリケーションの検討
2.6.2 使用するプロセスの検討と必要なソフトウェアの準備
2.7 運用方法を検討する
2.7.1 JP1と連携したシステムの運用
2.7.2 クラスタソフトウェアと連携したシステムの運用
3. システム構成の検討(J2EEアプリケーション実行基盤)
3.1 システム構成を検討するときに考慮すること
3.1.1 システムの目的と構成
3.1.2 システム構成の設計手順
3.1.3 システム構成の考え方
3.2 システム構成の説明について
3.2.1 この章のシステム構成に共通する留意点
3.2.2 システム構成図で使用する図の凡例
3.3 アプリケーションの構成を検討する
3.3.1 アプリケーションの構成とアクセスポイント
3.3.2 リソースの種類とリソースアダプタ
3.4 クライアントとサーバの構成を検討する
3.4.1 サーブレットとJSPをアクセスポイントに使用する構成(Webサーバ連携の場合)
3.4.2 サーブレットとJSPをアクセスポイントに使用する構成(NIO HTTPサーバに直接アクセスする場合)
3.4.3 Session BeanとEntity Beanをアクセスポイントに使用する構成
3.4.4 CTMを使用する場合にStateless Session Beanをアクセスポイントに使用する構成
3.5 サーバ間での連携を検討する
3.5.1 Session BeanとEntity Beanを呼び出すサーバ間連携
3.5.2 CTM経由でStateless Session Beanを呼び出すサーバ間連携
3.6 トランザクションの種類を検討する
3.6.1 ローカルトランザクションを使用する場合の構成
3.6.2 グローバルトランザクションを使用する場合の構成
3.6.3 トランザクションコンテキストのプロパゲーションを使用する場合の構成
3.7 ロードバランスクラスタによる負荷分散方式を検討する
3.7.1 Webサーバ連携時の負荷分散機を利用した負荷分散(サーブレット/JSPの場合)
3.7.2 NIO HTTPサーバ使用時の負荷分散機を利用した負荷分散(Webサーバを経由しない場合)
3.7.3 CORBAネーミングサービスを利用した負荷分散(Session BeanとEntity Beanの場合)
3.7.4 CTMを利用した負荷分散(Stateless Session Beanの場合)
3.8 サーバ間で非同期通信をする場合の構成を検討する
3.8.1 Message-driven Beanをアクセスポイントに使用する場合の構成(CJMSプロバイダを使用する場合)
3.8.2 Message-driven Beanをアクセスポイントに使用する場合の構成(TP1/Message Queueを使用する場合)
3.8.3 Message-driven Beanをアクセスポイントに使用する場合の構成(Reliable Messagingを使用する場合)
3.8.4 Message-driven Beanのインスタンスプールを利用した負荷分散(TP1/Message Queueを使用する場合)
3.9 運用管理プロセスの配置を検討する
3.9.1 運用管理サーバにManagement Serverを配置する構成
3.9.2 マシン単位にManagement Serverを配置する構成
3.9.3 コマンドで運用する場合の構成
3.10 セッション情報の引き継ぎを検討する
3.10.1 データベースを使用する構成(データベースセッションフェイルオーバ機能)
3.11 クラスタソフトウェアを使用した障害時の系切り替えを検討する
3.11.1 アプリケーションサーバの実行系と待機系を1:1にする構成(トランザクションサービスを使用しない場合)
3.11.2 アプリケーションサーバの実行系と待機系を1:1にする構成(トランザクションサービスを使用する場合)
3.11.3 運用管理サーバの実行系と待機系を1:1にする構成
3.11.4 アプリケーションサーバの実行系と待機系を相互スタンバイにする構成
3.11.5 リカバリ専用サーバを使用する場合の構成(N:1リカバリシステム)
3.11.6 ホスト単位管理モデルの実行系と待機系をN:1にする構成
3.12 性能解析トレースファイルを出力するプロセスを配置する
3.12.1 システム構成の特徴
3.12.2 それぞれのマシンに必要なソフトウェアと起動するプロセス
3.13 アプリケーションサーバ以外の製品との連携を検討する
3.13.1 JP1を使用して運用する場合の構成
3.13.2 TP1インバウンド連携機能を使用してOpenTP1のSUPからMessage-driven Beanを呼び出す場合の構成
3.13.3 CTMゲートウェイ機能を利用してEJBクライアント以外からStateless Session Beanを呼び出す構成
3.14 任意のプロセスを運用管理の対象にする
3.14.1 システム構成の特徴
3.14.2 それぞれのマシンで起動するプロセス
3.15 アプリケーションサーバのプロセスが使用するTCP/UDPのポート番号
4. システム構成の検討(バッチアプリケーション実行基盤)
4.1 システム構成を検討するときに考慮すること
4.1.1 システムの目的と構成
4.1.2 システム構成の設計手順
4.1.3 バッチアプリケーションを実行するシステムで使用するTCP/UDPのポートについての注意事項
4.2 バッチサーバを使用する場合のシステム構成
4.2.1 バッチアプリケーションのスケジューリング機能を使用しないシステムのシステム構成
4.2.2 バッチアプリケーションのスケジューリング機能を使用するシステムのシステム構成
5. 使用するリソースの見積もり(J2EEアプリケーション実行基盤)
5.1 システム構成ごとに使用するリソース
5.1.1 WebサーバとJ2EEサーバを同じマシンに配置する場合の使用リソース
5.1.2 WebサーバとJ2EEサーバを別のマシンに配置する場合の使用リソース
5.1.3 データベースの使用リソース
5.1.4 運用管理サーバの使用リソース
5.1.5 CTMを使用する場合の使用リソース
5.2 プロセスごとに使用するリソース
5.2.1 J2EEサーバが使用するリソースの見積もり
5.2.2 運用管理エージェントが使用するリソースの見積もり
5.2.3 パフォーマンストレーサが使用するリソースの見積もり
5.2.4 CTMが使用するリソースの見積もり
5.2.5 cjclstartapプロセスの見積もり
5.3 プロセスごとに使用するメモリの見積もり
5.3.1 J2EEサーバが使用する仮想メモリの使用量の見積もり
5.3.2 CTMのデーモンプロセスが使用するメモリの使用量の見積もり
6. 使用するリソースの見積もり(バッチアプリケーション実行基盤)
6.1 システム構成ごとに使用するリソース
6.1.1 バッチサーバを配置する場合の使用リソース
6.1.2 データベースの使用リソース
6.1.3 CTMを使用する場合の使用リソース
6.2 プロセスごとに使用するリソース
6.2.1 バッチサーバが使用するリソースの見積もり
6.2.2 運用管理エージェントが使用するリソースの見積もり
6.2.3 パフォーマンストレーサが使用するリソースの見積もり
6.2.4 CTMが使用するリソースの見積もり
6.3 仮想メモリの使用量の見積もり
6.3.1 仮想メモリの使用量の計算式
6.3.2 仮想メモリの使用量を計算する場合の注意事項
7. JavaVMのメモリチューニング
7.1 GCとJavaVMのメモリ管理の概要
7.2 SerialGCの仕組み
7.2.1 SerialGCの概要
7.2.2 オブジェクトの寿命と年齢の関係
7.2.3 CopyGCの仕組み
7.2.4 オブジェクトの退避
7.2.5 GC対象外の領域(明示管理ヒープ機能を使用したExplicitヒープ領域の利用)
7.2.6 SerialGC使用時のJavaVMで使用するメモリ空間の構成とJavaVMオプション
7.2.7 GCの発生とメモリ空間の関係
7.3 FullGC発生を抑止するためのチューニングの概要
7.3.1 チューニングの考え方
7.3.2 チューニング手順
7.4 Javaヒープのチューニング
7.4.1 Javaヒープのメモリサイズの見積もり
7.4.2 Javaヒープのメモリサイズの設定方法
7.4.3 Javaヒープのメモリサイズの使用状況の確認方法
7.5 Javaヒープ内のTenured領域のメモリサイズの見積もり
7.5.1 アプリケーションで必要なメモリサイズの算出
7.5.2 Javaヒープ内のNew領域のメモリサイズを追加する理由
7.6 Javaヒープ内のNew領域のメモリサイズの見積もり
7.6.1 Javaヒープ内のSurvivor領域のメモリサイズの見積もり
7.6.2 Javaヒープ内のEden領域のメモリサイズの見積もり
7.7 Javaヒープ内に一定期間存在するオブジェクトの扱いの検討
7.7.1 Javaヒープ内のNew領域に格納する方法
7.7.2 Javaヒープ内のTenured領域に格納する方法
7.7.3 Explicitヒープに格納する方法
7.8 Javaヒープの最大サイズ/初期サイズの決定
7.9 Javaヒープ内のMetaspace領域のメモリサイズの見積もり
7.10 拡張verbosegc情報を使用したFullGCの要因の分析方法
7.10.1 拡張verbosegc情報の出力形式の概要
7.10.2 FullGC発生時の拡張verbosegc情報の出力例
7.11 Explicitヒープのチューニング
7.11.1 Explicitヒープのメモリサイズの見積もり(J2EEサーバが使用するメモリサイズの見積もり)
7.11.2 HTTPセッションに関するオブジェクトで利用するメモリサイズ
7.11.3 明示管理ヒープ機能利用によるメモリサイズの見積もりへの影響
7.11.4 稼働情報による見積もり
7.12 アプリケーションで明示管理ヒープ機能を使用する場合のメモリサイズの見積もり
7.12.1 アプリケーションで明示管理ヒープ機能を使用するかどうかの検討
7.12.2 見積もりの考え方
7.12.3 アプリケーションが使用するメモリサイズ
7.13 明示管理ヒープ機能の自動配置機能を使用したExplicitヒープの利用の検討
7.13.1 アプリケーション内にTenured領域の増加原因のオブジェクトがある場合
7.13.2 Tenured領域利用済みサイズの増加原因が不明な場合
7.14 明示管理ヒープ機能適用時に発生しやすい問題とその解決方法
7.14.1 Explicitヒープのある時点での利用状況(スナップショット)の調査
7.14.2 利用状況の推移の調査
7.14.3 Explicitヒープあふれが発生した場合の確認と対処
7.14.4 Explicitメモリブロックの初期化が失敗した場合の確認と対処
7.14.5 Explicitメモリブロック明示解放処理時にJavaヒープへのオブジェクト移動が発生した場合の確認と対処
7.14.6 Explicitメモリブロックの自動解放処理が長時間化した場合の確認と対処
7.15 G1GCの仕組み
7.15.1 G1GCの概要
7.15.2 オブジェクトの寿命と年齢の関係
7.15.3 New領域を対象としたGCの仕組み
7.15.4 オブジェクトの退避
7.15.5 メモリ空間とリージョンの関係
7.15.6 リージョンの使われ方
7.15.7 G1GCで実行されるGC
7.15.8 YoungGC
7.15.9 Concurrent Marking(CM)
7.15.10 MixedGC
7.15.11 FullGC
7.16 G1GCのチューニング
7.16.1 チューニングの流れ
7.16.2 初期検証
7.16.3 FullGCの発生を抑止するチューニング
7.16.4 最悪レスポンス時間を短くするチューニング
7.16.5 スループットを向上させるチューニング
7.17 ZGCの仕組み(JDK17以降の場合)
7.17.1 ZGCの概要
7.17.2 ZGCの用語
7.17.3 JavaVMで使用するメモリ空間の構成
7.17.4 ZGCサイクル
7.17.5 Javaヒープ領域のメモリ管理方法
7.17.6 ZGC独自のGC発生要因
7.18 ZGCのチューニング(JDK17以降の場合)
7.18.1 ZGCでのGCの考え方
7.18.2 チューニングの流れ
7.18.3 GC停止時間およびスループットの改善方法
7.18.4 OSのパラメタ設定(Linuxの場合)
7.19 ZGC使用時の他機能への影響(JDK17以降の場合)
7.19.1 使用が制限される機能
7.19.2 出力内容が変更される機能
7.20 ZGC使用時の注意事項(JDK17以降の場合)
8. パフォーマンスチューニング(J2EEアプリケーション実行基盤)
8.1 パフォーマンスチューニングで考慮すること
8.1.1 パフォーマンスチューニングの観点
8.1.2 チューニング手順
8.1.3 アプリケーションの種類ごとにチューニングできる項目
8.2 チューニングの方法
8.2.1 J2EEサーバおよびWebサーバのチューニング
8.2.2 アプリケーションまたはリソースのチューニング
8.2.3 CTMの動作のチューニング
8.2.4 それ以外の項目のチューニング
8.3 同時実行数を最適化する
8.3.1 同時実行数制御および実行待ちキュー制御の考え方
8.3.2 最大同時実行数と実行待ちキューを求める手順
8.3.3 リクエスト処理スレッド数を制御する
8.3.4 Webアプリケーションの同時実行数を制御する
8.3.5 Enterprise Beanの同時実行数を制御する
8.3.6 CTMを使用して同時実行数を制御する
8.3.7 同時実行数を最適化するためのチューニングパラメタ
8.4 Enterprise Beanの呼び出し方法を最適化する
8.4.1 ローカルインタフェースを使用する
8.4.2 リモートインタフェースのローカル呼び出し最適化機能を使用する
8.4.3 リモートインタフェースの参照渡し機能を使用する
8.4.4 Enterprise Beanの呼び出し方法を最適化するためのチューニングパラメタ
8.5 データベースへのアクセス方法を最適化する
8.5.1 コネクションプーリングを使用する
8.5.2 ステートメントプーリングを使用する
8.5.3 データベースへのアクセス方法を最適化するためのチューニングパラメタ
8.6 タイムアウトを設定する
8.6.1 タイムアウトが設定できるポイント
8.6.2 Webフロントシステムでのタイムアウトを設定する
8.6.3 バックシステムでのタイムアウトを設定する
8.6.4 トランザクションタイムアウトを設定する
8.6.5 DB Connectorでのタイムアウトを設定する
8.6.6 データベースでのタイムアウトを設定する
8.6.7 J2EEアプリケーションのメソッドタイムアウトを設定する
8.6.8 タイムアウトを設定するチューニングパラメタ
8.7 Webアプリケーションの動作を最適化する
8.7.1 静的コンテンツとWebアプリケーションの配置を切り分ける
8.7.2 静的コンテンツをキャッシュする
8.7.3 Webアプリケーションの動作を最適化するためのチューニングパラメタ
8.8 CTMの動作を最適化する
8.8.1 CTMドメインマネジャおよびCTMデーモンの稼働状態の監視間隔をチューニングする
8.8.2 負荷状況監視間隔をチューニングする
8.8.3 CTMデーモンのタイムアウト閉塞を設定する
8.8.4 CTMで振り分けるリクエストの優先順位を設定する
8.8.5 CTMの動作を最適化するチューニングパラメタ
9. パフォーマンスチューニング(バッチアプリケーション実行基盤)
9.1 パフォーマンスチューニングで考慮すること
9.1.1 パフォーマンスチューニングの観点
9.1.2 チューニング手順
9.1.3 チューニング項目
9.2 チューニングの方法
9.2.1 バッチサーバのチューニング
9.2.2 リソースのチューニング
9.3 タイムアウトを設定する
9.3.1 タイムアウトが設定できるポイント
9.3.2 トランザクションタイムアウトを設定する
9.3.3 タイムアウトを設定するチューニングパラメタ
9.4 GC制御で使用するしきい値を設定する
9.4.1 しきい値を設定する目的
9.4.2 しきい値設定の考え方
9.4.3 GC制御で使用するしきい値を設定するためのチューニングパラメタ
付録
付録A HTTPセッションで利用するExplicitヒープの効率的な利用
付録A.1 HTTPセッションに格納するオブジェクトの寿命を考慮する
付録A.2 HTTPセッションに格納するオブジェクトの更新頻度を考慮する
付録A.3 HTTPセッションを作成するタイミングを考慮する
付録B Explicitヒープに配置するオブジェクトの寿命による明示管理ヒープ機能への影響
付録B.1 Explicitメモリブロックの自動解放処理への影響
付録B.2 Explicitヒープのメモリ使用量への影響
付録B.3 Explicitヒープに配置するオブジェクトの参照関係と寿命との関係
付録C 推奨手順以外の方法でパフォーマンスチューニングをする場合のチューニングパラメタ
付録C.1 同時実行数を最適化するためのチューニングパラメタ(推奨手順以外の方法)
付録C.2 Enterprise Beanの呼び出し方法を最適化するためのチューニングパラメタ(推奨手順以外の方法)
付録C.3 データベースへのアクセス方法を最適化するためのチューニングパラメタ(推奨手順以外の方法)
付録C.4 タイムアウトを設定するチューニングパラメタ(推奨手順以外の方法)
付録C.5 Webアプリケーションの動作を最適化するためのチューニングパラメタ(推奨手順以外の場合)
付録C.6 CTMの動作を最適化するチューニングパラメタ(推奨手順以外の方法)
付録C.7 バッチサーバのフルガーベージコレクションを発生させるしきい値を設定するためのチューニングパラメタ(推奨手順以外の方法)
付録D 用語解説
ページの先頭へ