【7】レスポンス遅延時のOracle性能分析事例

【7】レスポンス遅延時のOracle性能分析事例

Webシステムのレスポンス遅延分析
原因はOracleのハードパース回数が多いことであると特定し、CPU増強を回避
 


きっかけ:承認フローシステムのレスポンス遅延

  • 全社で使用している承認フローシステムのレスポンスが悪い
  • ログイン時、文書通知一覧が表示されるはずが、数分かかることがしばしばある

システム部門の対応:開発会社の保守切れにより対応しきれず

  • 日頃トランザクションを見ての監視はしていたものの、このシステムを開発した会社との保守契約が切れており、詳細について不明
  • リソースではなくシステムの問題かもしれないが、原因を調査し、今後も継続的に遅延予防対策を行いたい
  • CPUを増強して改善を図る、という案も出たが、IIMへ評価を依頼

システム構成

システム名 OS サブシステム CPU数 メモリサイズ
DBサーバ RHEL5.1(64) Oracle 8 8.0GB
Webサーバ RHEL5.1(64) HTTP 4 3.2GB
APサーバ
RHEL5.1(64) HTTP 2 3.2GB

STEP1:チューニングヒントによる問題点の特定

  • チューニングヒントで発見された問題
    • バッファキャッシュヒット率が低い
      90%を下回っている時間帯がある
    • ソフトパース率が低い
      90%を下回っている時間帯がある

  • 上記2点にボトルネックがあると判断し、更なる分析を進めることになった
  • APサーバ、Webサーバには問題無し
 
【出力されたチューニングヒント】   

STEP2-1:現状確認 CPU使用率とhttpレスポンス

  • 平均レスポンスが8秒を超えている時間帯があり、同じタイミングでCPU使用率が高くなっていることを発見



STEP2-2:現状確認 CPU負荷/ランキュー長

  • 8CPUに対して最大で40個のランキューが発生しており、過負荷な状態であることを発見




STEP2-3:現状確認 Oracleバッファキャッシュヒット率

  • オンライン時間帯のバッファキャッシュヒット率が90%未満であることを確認


STEP2-4:現状確認 パース状況

  • ハードパースが発生しており、パース回数に占めるハードパースの割合が高いことを発見





 

STEP3:相関確認 CPU使用率vsハードパース回数

  • 原因特定のため、相関分析を実施
    CPU使用率とハードパース回数に相関が有り、ハードパース回数がCPU高負荷の原因と特定


 

STEP4:遅延原因の特定と対応策の提案

遅延原因
  • バッファキャッシュヒット率の低下
  • ハードパースが発生し、DBサーバのCPUが枯渇
    -CPUはOracleによってほぼ全てが消費されている
    -処理の重いハードパースが多く発生し、CPUを消費している
対応策
  • バッファキャッシュヒット率の改善
    -メモリーには余裕がることが確認できているので、SGA領域を増やして、バッファキャッシュヒット率の向上を図る   -アクセス件数が大量であるため、数%の向上でもレスポンスが改善できる可能性がある
  • ハードパースの削減
    -同じ構文のSQLが確実に共有されるように記述法(大文字、小文字、空白の位置など)を統一する
    -バインド変数を使用してSQLを記述し、条件指定される値の違いによって共有プール内で
      別オブジェクトとなることを防ぐ

お客様の対応

  • バッファキャッシュヒット率については、SGA領域を拡張し、改善された
  • ハードパースについては、当該システムが1年後に更改予定のため、SQL文の改修実施せず
  • 次期システムのプロジェクトチームへ状況を報告
  • 同じことが起こらないようにSQL文を見直すよう依頼