3.3.16 coreダンプ取得の設定
ここでは,UNIXの場合に,coreダンプを取得するための設定について説明します。
- 注意事項
-
Linuxの仕様によって,coreファイル内のサイズ情報が不正となる場合があります。
- 〈この項の構成〉
(1) coreファイルのサイズの上限値の設定
システムの動作環境によっては,coreファイルのサイズの上限値が0になっている場合があります。この場合,プロセスのcoreダンプを取得できないため,あらかじめcoreファイルのサイズの上限値を無制限に設定しておく必要があります。coreファイルのサイズの上限値を無制限にするためには,簡易構築定義ファイルまたはオプション定義ファイルでJavaVM起動パラメタにオプションを指定するか,またはシェルコマンドを実行します。ただし,ハードリミット値以上のサイズのcoreファイルは出力されません。
なお,簡易構築定義ファイルまたはオプション定義ファイルでJavaVM起動パラメタに指定するメモリプールサイズが大きいほど,coreファイルのサイズも大きくなるため,十分空きディスク容量を確保してください。
-
簡易構築定義ファイルでJavaVM起動パラメタにオプションを指定する場合
簡易構築定義ファイルの論理J2EEサーバ(j2ee-server)の<configuration>タグ内に,JavaVM起動パラメタを定義します。JavaVM起動パラメタの指定内容を次に示します。
- <param-name>タグ
-
add.jvm.arg
- <param-value>タグ
-
-XX:+HitachiFullCore
指定例(物理ティアの定義の場合)
<configuration> <logical-server-type>j2ee-server</logical-server-type> <param> <param-name>add.jvm.arg</param-name> <param-value>-XX:+HitachiFullCore</param-value> </param> : </configuration> -
オプション定義ファイルでJavaVM起動パラメタにオプションを指定する場合
オプション定義ファイルにJavaVM起動パラメタを定義します。
指定例(Management Server用オプション定義ファイルの場合)
add.jvm.arg=-XX:+HitachiFullCore
-
シェルコマンドを実行する場合
シェルコマンドを実行して,coreファイルの上限値を無制限にしてください。
csh(Cシェル)の場合の実行例
limit coredumpsize unlimit
sh(標準シェル)の場合の実行例
ulimit -c unlimited
また,これらの設定に加え,シェルコマンドを実行して,一つのファイルサイズの上限値を無制限にしておくことをお勧めします。
-
csh(Cシェル)の場合の実行例
limit filesize unlimit
-
sh(標準シェル)の場合の実行例
ulimit -f unlimited
- 参考
-
coreファイルのサイズの見積もり式
JavaVMがプロセスダウンした場合に生成されるcoreファイルサイズは,仮想メモリの使用量と同じになります。仮想メモリの使用量の計算式については,次に示すマニュアルを参照してください。coreファイル生成先であるJavaVMプロセスのカレントディレクトリがあるディスクには,常に,このcoreファイルサイズ以上の空き領域が必要です。
-
J2EEアプリケーション実行基盤の場合
マニュアル「アプリケーションサーバ システム設計ガイド」の「5.3 プロセスごとに使用するメモリの見積もり」
-
バッチアプリケーション実行基盤の場合
マニュアル「アプリケーションサーバ システム設計ガイド」の「6.3 仮想メモリの使用量の見積もり」
-
Management Serverと運用管理エージェントの場合
マニュアル「アプリケーションサーバ システム設計ガイド」の「5.3 プロセスごとに使用するメモリの見積もり」およびリリースノートのCosminexus Component Containerが使用するメモリ所要量の「標準」の所要量
-
(2) coreファイルのファイル数の上限値の設定
-
論理J2EEサーバのcoreファイルのファイル数の上限値は,簡易構築定義ファイルの「j2ee-server」の<configuration>タグ内に,ejb.server.corefilenumパラメタで定義できます。ejb.server.corefilenumパラメタは,J2EEサーバの拡張パラメタで定義します。
cjstartsvプロセスの再起動時に「<作業ディレクトリ>/ejb/<サーバ名称>/」に出力されるcoreダンプファイルの合計が上限値を超えた場合,出力日時が古い順に削除されます。
-
Management Serverのcoreファイルのファイル数の上限値は,Management Server用オプション定義ファイルに,ejb.server.corefilenumパラメタで定義できます。
Management Serverプロセスの再起動時に「<Application Serverのインストールディレクトリ>/manager/containers/m/ejb/<Management Serverのサーバ名>/」に出力されるcoreダンプファイルの合計が上限値を超えた場合,出力日時が古い順に削除されます。
(3) Red Hat Enterprise Linux 8以降のcoreダンプファイルに関する注意事項
Red Hat Enterprise Linux 8以降では,systemd-coredumpがデフォルトで有効になっています。
systemd-coredumpが有効になっている場合,プロセス異常終了時に出力されるcoreダンプファイルの出力先や生存期間が,OSのsystemd-coredumpによって管理されます。
coreダンプファイルは障害解析時の重要な資料となるため,次のコマンドを参考に,Red Hat Enterprise Linux 7までと同様にsystemd-coredumpを無効化することを推奨します。
- なお,設定した内容は,稼働しているすべてのプロセスに対して有効となりますのでご注意ください。
-
# sysctl -a | grep core_pattern
kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e
# sysctl -w kernel.core_pattern=core
kernel.core_pattern = core
- OS再起動後もこの設定を有効にするためには,/etc/sysctl.conf に次の一行を記述してください。
-
kernel.core_pattern = core
systemd-coredumpが有効になっている場合の注意事項を次に示します。
(a) J2EEサーバとバッチサーバによるcoreダンプファイルの世代管理について
J2EEサーバとバッチサーバのcoreダンプファイルは,「<製品の作業ディレクトリ>/ejb/<サーバ名称>/core*」に出力されず,J2EEサーバとバッチサーバは,「ejb.server.corefilenum」パラメタによる,coreダンプファイルの世代管理ができなくなるおそれがあります。
これによって,coreダンプファイル数の上限がなくなるため,単調増加したcoreダンプファイルが,ディスク容量を圧迫するおそれがあります。
(b) Webコンテナサーバによるcoreダンプファイルの世代管理について
Webコンテナサーバのcoreダンプファイルは,「<Application Serverのインストールディレクトリ>/CC/web/containers/<サーバ名称>/core*」に出力されず,Webコンテナサーバは,「web.server.corefilenum」パラメタによる,coreダンプファイルの世代管理ができなくなるおそれがあります。
これによって,coreダンプファイル数の上限がなくなるため,単調増加したcoreダンプファイルが,ディスク容量を圧迫するおそれがあります。
(c) snapshotログの注意点
systemd-coredumpが有効な場合,coreダンプファイルはsnapshotログに含まれません。このため,coreダンプファイルが必要な障害調査に時間が掛かり,調査できなくなるおそれがあります。
異常時に出力されたcoreダンプファイルは,削除される前に退避する運用にしてください。
(d) coreダンプファイル出力のタイムアウト時間について
systemd-coredumpが有効な場合,coreダンプファイル出力のタイムアウト時間はデフォルト5分です。このため,coreダンプファイルの出力に5分以上要する場合,coreダンプファイルは出力されません。