「遅い…」レスポンス課題の調査・見直し観点は?~ボトルネック確認編~
皆さん、こんんちは!
株式会社アシストでWebFOCUSのサポートを担当しています齋藤です。
さて、今年の1月に開設した「サポぶろぐ」ですが、皆さんにとって有益な記事になってますでしょうか?
ここ1年はコロナの影響もあり、お客様と直接お会いして「こういう情報が欲しい!」というご意見を伺えず、
もどかしさを感じております…
もし、皆様の欲しい情報や、こんな事例ないの?等々の疑問がありましたら、
ご遠慮無く担当営業・技術にご連絡ください!
ということで、今回の記事はコチラ!
「遅い…」レスポンス課題の調査・見直し観点は?~ボトルネック確認編~
開発およびテスト時に「お、遅い… 」と、レスポンス課題に悩まされた経験をお持ちの方もいるかと思います。
そこで! 我々がお客様からレスポンス課題に関するご質問を頂いた際に、どのような観点で調査を行っているのか
について、以下2つをピックアップしてご紹介します!
※ 細かくお伝えすると、以下2つ以外の観点での調査もしているのですが、全て紹介すると記事が小論文みたいな長さになりそうなので割愛します(笑)
1. ボトルネックの確認について
2. SQLの最適化について
本記事では、[ボトルネックの確認編]として上記の「1.」について紹介します。
[2.]に記載したSQL最適化編も次回以降に公開する予定ですので、今暫くお待ちください!
◆ ボトルネックの確認について
レポートおよびグラフを実行した際のレスポンス課題として、ボトルネックとなり得る箇所は主に以下となります。
DB側のレスポンス (検索件数やスペックに依存する場合が多い)
WebFOCUS側の処理 (HOLDファイルの作成やレポート・グラフ作成処理)
描画処理 (ブラウザ側に依存する場合もあります)
上記以外が原因の場合も稀にありますが、上記のいずれかに当てはまる場合が多いです。
描画処理に関しては、ブラウザ側の処理が原因の場合が多く、グラフアニメーションの停止や
出力形式を変更する等の対応が必要になってしまう場合もあります…orz
今回は「DB側」がボトルネックとなっているのか。もしくは、「WebFOCUS側の処理」がボトルネックと
なっているのか。の確認方法についてご紹介します。確認方法の大まかな流れは以下の通りです!
1.該当のプロシジャ(レポート・グラフ)を実行
2.WebコンソールからDBMS時間・サーバ時間を確認
これだけです(簡単!)
もう少し詳しくご紹介していきます。
手順1. Webコンソール(http://サーバ名:8121)へ管理者ユーザーとしてアクセスします。
手順2.ワークスペースタブから [ DEFAULT ] をダブルクリックします。
上記の手順で表示される画面にて、実行エージェント毎(Tscomid)のステータスを確認することが出来ます。
画面を右側にスクロールする(下記の画面キャプチャの通り)と以下の項目があり、ここで処理時間を確認する
ことが出来ます。
※ 該当のレポートを実行した直後にWebコンソール画面へアクセスして下さい!
※ [マスターファイル]や、[クエリ時間]という項目からどのリクエストに関する情報なのかを特定することが可能です
サーバ時間 : WebFOCUS側の処理時間
DBMS時間 : DBにSQLを発行しデータを受け取るまでのDB側での処理時間
例えば…
[DBMS時間]の処理に時間を要している場合、DB側の検索処理に時間がかかっているため、WebFOCUS側ではなく、
DB側での調査や出力件数自体を減らす等々の対応が必要になってきます。
逆に…
[サーバ時間]の処理に時間を要している場合、WebFOCUS側の処理で負荷がかかっている可能性があり、
処理の見直しにて改善の余地があります。
…では、WebFOCUS側の処理で時間を要している場合に、どのような見直し観点があるのか。ですが、
HOLDファイルの作成や、結合処理(JOIN)をWebFOCUS側で頑張ってやっていたりと… 色々な要因が考えられます。
まずはSQLトレースを取得し、WebFOCUSがDBに対してどのようなSQLを発行しているのか?
そのSQLは最適化されたSQLなのか?を確認する必要があります。
…ということで、これ以上熱く語りすぎると長文になってしましますので、SQLトレースの取得方法や
最適化については、次回の記事でご紹介します!
お楽しみに~♪
<この記事をかいた人>
株式会社アシスト DX推進技術本部データ活用技術統括部 齋藤 昇太
入社歴 : 2015年新卒入社、7年間 WebFOCUS のサポートを専任
趣味 : プロ野球観戦(日ハムファン)、Apex(マスターランク達成!)
ひとこと : 「こんな記事が欲しい」というご要望お待ちしてまーす!