WEBサーバーのCPU負荷が高い状態が数分間継続し、desknet's NEOが使用できません。(Oracle版)

WEBサーバーのCPU負荷が高い状態が数分間継続し、desknet's NEOが使用できません。(Oracle版)

該当製品:パッケージ版
質問ID:NEO-T0232
対象:全バージョン(Oracle版のみ)

本件はWindows Oracle版が対象です。

Oracle11gより、問題の回避、検出、診断などは、Automatic Diagnostic Repository(以下、ADR)機能にて管理されるようになっています。
ADRはデフォルトで有効で、ログの出力先は「 ${ORACLE_HOME}\log 」です。
ログの出力先のフォルダが存在しないために、OracleClientのログファイルのローテーションによりCPUリソースを圧迫して、本件が発生している可能性があります。

弊社で確認できている事象としまして、desknet’s NEOにアクセスするたびに、OracleClientのログの出力先のフォルダが存在しないことで、OracleClientのログファイル「log_番号.xml」に以下が出力され続けます。
Copied!
“Directory does not exist for read/write [C:\app\Administrator\product\11.2.0\client_1\log]”

このログファイルは、1ファイル10MBでローテーションされ、このタイミングでCPUリソースを消費し負荷を上昇させます。
「log_番号.xml」ファイルが大量にある場合、ローテーションに時間を要し、CPUリソースを占有し続け、負荷が高い状況が継続し、結果、desknet’s NEOにアクセスできない状況になります。

log_番号.xmlファイル出力対象フォルダ
C:\Users\Administrator\Oracle\oradiag_xxx\diag\clients\user_xxx\host_xxx\alert
C:\Windows\Temp\oradiag_xxx\diag\clients\user_xxx\host_xxx\alert

対処方法

以下のいずれか対応を行います。

1. ログ出力先のフォルダを作成する。
以下のパスのフォルダを作成してください。
${ORACLE_HOME}\log\diag\clients
※OracleClinetデフォルトインストールの場合は以下です。
C:\app\Administrator\product\11.2.0\client_1\log\diag\clients

2. ログを出力しない設定にする。
「sqlnet.ora」ファイルに、「DIAG_ADR_ENABLED=OFF」を追加してください。
※OracleClinetデフォルトインストールの場合、「C:\app\Administrator\product\11.2.0\client_1\network\admin」フォルダ下に「sqlnet.ora」ファイルがあります。
メモ帳等のテキストエディターにて編集し、保存してください。
Copied!
# sqlnet.ora Network Configuration File:
C:\app\Administrator\product\11.2.0\client_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install “Software Only”, this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NONE)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
DIAG_ADR_ENABLED=OFF :これを追加する

既存ログの削除方法

ADRコマンド・インタプリタより行います。
運用を停止してから作業してください。
詳細のパージ(削除)方法は、Oracleのマニュアルをご確認ください。

例1)
1. コマンドプロンプト起動します。
2. adrciコマンドを入力します。
C:\Users\Administrator>adrci
3. ADR baseをセットします。
adrci> set base C:\Users\Administrator\Oracle\oradiag_administrator
※ADR_baseは、「diag」フォルダが存在するパスの前までを指定します。
上記は C:\Users\Administrator\Oracle\oradiag_administrator\diag のケースです。
パスは環境に合わせて設定します。
4. ADR homeを確認します。
adrci> show home
ADR Home = c:\users\administrator\oracle
\oradiag_administrator\diag\clients\user_administrator\host_xxxx:
5. ログをパージ(削除)します。
デフォルトでは、「alert」フォルダログは720時間(30日)、「trace」フォルダログは8760時間(365日)です。
この設定で良い場合は、以下のコマンドを実施します。
adrci>puage
※設定に関係なく、指定した経過時間(分)で削除する場合は、以下のコマンドを実施します。
[1日(1440分)以上経過したログを削除する場合]
adrci>purge -age 1440 -type alert
adrci>exit

例2)
1. コマンドプロンプト起動します。
2. adrciコマンドを入力します。
C:\Users\Administrator>adrci
3. ADR baseをセットします。
adrci> set base C:\Windows\Temp\oradiag_xxx
※ADR_baseは、「diag」フォルダが存在するパスの前までを指定します。
上記は C:\Windows\Temp\oradiag_xxx\diag のケースです。
パスは環境に合わせて設定します。
4. ADR homeを確認します。(複数ある場合は以下のよう表示されます)
adrci> show home
ADR Homes:
diag\clients\user_xxx\host_684710773_76
diag\clients\user_xxx\host_990435674_76
5. ADR homeを設定します。
adrci> set homepath diag\clients\user_xxx\host_684710773_76
6. ログをパージ(削除)します。
デフォルトでは、「alert」フォルダログは720時間(30日)、「trace」フォルダログは8760時間(365日)です。
この設定で良い場合は、以下のコマンドを実施します。
adrci>puage
※設定に関係なく、指定した経過時間(分)で削除する場合は、以下のコマンドを実施します。
[1日(1440分)以上経過したログを削除する場合]
adrci>purge -age 1440 -type alert
7. 2つ目のADR homeを設定します。
adrci> set homepath diag\clients\user_xxx\host_990435674_76
8. ログをパージ(削除)します。
※手順は6. と同じです。
対処方法にて、ログフォルダを作成した場合、ログのパージ(削除)は定期的に行うよう運用してください。 その際のADR baseは、デフォルトインストールの場合「C:\app\Administrator\product\11.2.0\client_1\log」です。
Powered by Helpfeel