[Oracle] RAIDコントローラバッテリ不良に起因するパフォーマンスの低下 | Archive Redo Blog

Archive Redo Blog

DBエンジニアのあれこれ備忘録

あるシステムでバッチ処理のパフォーマンスが異常に悪くなるという現象が発生しました。

デバッグログなどをトレースしてみたところ、Oracleへのデータの登録・更新のSQLの実行時間がテスト環境などと比較しても顕著に長かったため、更にStatsPackを使用してバッチ処理実行中のパフォーマンス統計情報を取得してみました。

StatsPackレポートの中の待機イベントTOP5のところを見ると、以下のようになっていました。

Top 5 Timed Events                                                    Avg %Total
~~~~~~~~~~~~~~~~~~                                                   wait   Call
Event                                            Waits    Time (s)   (ms)   Time
----------------------------------------- ------------ ----------- ------ ------
log file parallel write                         31,557         670     21   34.2
log file sync                                   30,801         621     20   31.7
CPU time                                                       377          19.3
latch: library cache                               789         187    237    9.5
control file parallel write                        595          78    132    4.0
          -------------------------------------------------------------

REDOログの書き込み関連の待機イベント("log file parallel write"、"log file sync")の待ち時間(Time)が著しく長いように見えます。

テスト環境で同様の処理を実行中に取得したStatsPackレポートでは以下のようになっていました。

Top 5 Timed Events                                                    Avg %Total
~~~~~~~~~~~~~~~~~~                                                   wait   Call
Event                                            Waits    Time (s)   (ms)   Time
----------------------------------------- ------------ ----------- ------ ------
log file sync                                   28,517          63      2   31.6
log file parallel write                         28,536          57      2   28.4
CPU time                                                        51          25.7
control file sequential read                     3,720          10      3    5.1
db file parallel write                           1,203           8      6    3.9
          -------------------------------------------------------------

REDOログの書き込み関連の待機イベント("log file parallel write"、"log file sync")が同じように上位には来ていますが、その待ち時間を比較すると10分の1程度になっています。

これはディスクI/O周りで何らかのハードウェア障害が発生している可能性もあるのではと思い、確認してもらったところ、RAIDコントローラのバッテリ不良が発生しており、そのためにRAIDのライトキャッシュが無効になっていたようです。


早速、RAIDコントローラのバッテリを交換を手配し、交換後に再度StatsPackレポートを取得したところ、以下のようになりました。

Top 5 Timed Events                                                    Avg %Total
~~~~~~~~~~~~~~~~~~                                                   wait   Call
Event                                            Waits    Time (s)   (ms)   Time
----------------------------------------- ------------ ----------- ------ ------
log file parallel write                         31,517          97      3   38.4
log file sync                                   30,587          90      3   35.5
CPU time                                                        51          20.0
db file sequential read                          2,494          12      5    4.9
log buffer space                                   282           3     10    1.1
          -------------------------------------------------------------

REDOログの書き込み関連の待機イベント("log file parallel write"、"log file sync")が同じように上位には来ていますが、その待ち時間は大幅に改善しています。

RAIDのライトキャッシュが無効になっていたことで、もっとも頻繁にディスクI/Oが発生するREDOログの書き込みのところで詰まっていたわけですね。


この手のハード障害によるパフォーマンスの低下は、OracleやOSの挙動だけを追い掛けているとなかなか原因にたどり着けないことも多いものですが、こうして一度経験すると、今後同じような現象が発生した時に迅速な対応が可能になります。

勉強になりました。