ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Adaptive Access Manager管理者ガイド
11g リリース2 (11.1.2)
B70199-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

28 パフォーマンスに関する考慮事項およびベスト・プラクティス

パフォーマンス問題を確認するには、パフォーマンス問題が存在するという判断に至った原因を監視し、構成やパフォーマンス情報を使用する必要があります。

この章では、OAAMのパフォーマンスのトラブルシューティングについて説明します。

28.1 一般的なパフォーマンス・チューニングおよびトラブルシューティング

トラブルシューティング・プロセス

トラブルシューティング・プロセスは、トラブルシューティング・フローの最上位から開始します。

  1. OAAMダッシュボードのパフォーマンス・セクションを使用して、ルールおよびポリシーのパフォーマンスを確認します。

    1. 「ダッシュボード」リストで「パフォーマンス」をクリックします。

    2. 「データ」リストで、「ルール」または「ポリシー」データ型をクリックします。

      図28-1 パフォーマンスごとのデータ型の表示

      パフォーマンスごとのデータ型の表示が示されています。
  2. データベース・パフォーマンスを確認するには、Fusion Middleware Controlを使用して、SQL問合せのパフォーマンスを確認します。

  3. 診断ログ、メモリー構成チェック、ネットワーク・ボトルネック、CPU監視を調査します。

    最良のパフォーマンスを確実に得られるように、すべてのパフォーマンス領域および関連事項を確認し、ボトルネックの発生場所を特定します。データを収集し、I/Oのボトルネックを調査することにより、DBAや設計者が問題を解決するための選択肢が広がります。システムが想定どおりに動作しないときには、応答時間が長くなったり、タイムアウトが頻繁に発生することがあります。

    Fusion Middleware Controlで主要なメトリックを監視することもできます。

  4. アプリケーション・サーバーとデータベース間の接続、jStackのスタック・トレースおよびスレッド・ダンプを確認します。

  5. 次のOAAMプロパティを確認します。

    bharosa.db.query.performance.warning.print.stack=false
    bharosa.db.query.performance.warning.threshold.ms=500 (print WARN for every call that takes more than 0.5 secs, this can be adjusted for optimal value other than this).
    bharosa.db.query.performance.warning.print.stack=true
    

パフォーマンスのトラブルシューティング

OAAM APIに対するコールが時間の経過とともに悪化する場合、次のような原因が考えられますので確認してください。

28.2 パフォーマンス監視およびトラブルシューティング・ツール

使用環境のパフォーマンスを監視して改善するには、使用可能なツールおよびそれらの各ツールの使用方法を理解しておく必要があります。

この項では、次の各ツールについて、その用途およびパフォーマンス関連のデータを収集するための使用方法を説明します。

ダッシュボード

ダッシュボードを使用すると、システムのパフォーマンスをより明確に把握できます。統計情報によって、ルール、ポリシー、チェックポイントおよびAPIの処理にかかった時間を確認できます。ルール、ポリシーおよびチェックポイントの実行にかかっている平均処理時間はどれぐらいですか。最も多くリソースを消費するアイテム(最もコストが高いおよび低いルールなど)を特定できます。今日、過去1日、過去7日間、過去30日間または過去90日間のデータを表示できます。また、ログイン回数、KBAまたはOTPのチャレンジ回数および1分当たりのトランザクション件数を表示できます。

ダッシュボードにはシステムの状態に関するデータが表示されます。これを使用して、ボトルネックの有無を判断できます。また、セッション詳細ページも便利なツールです。このページには、実行されたルールやポリシーの概要、および収集された詳細情報(実行時間、タイムスタンプ、実行されたルールの数、ランタイム、追加のデータなど)が表示されます。

ダッシュボードを起動するには、OAAMのナビゲーション・ツリーで「ダッシュボード」をダブルクリックします。ダッシュボードがOAAM管理コンソールの右側に表示されます。

ルール・ログ

ルール・ログのBI Publisherレポートを作成すると、サマリー情報およびパフォーマンスのボトルネックが潜在する場所の特定に役立つ情報をすばやく収集できます。

レポートによって、ルールに関する詳細情報を表示できます。セッション詳細ページにはルールの実行時間が表示されます。ルールで異常なほどの時間がかかる場合は、さらに分析を行います。また、各ランタイムの実行を確認します。初期状態では、問合せを印刷するのに何秒かかりますか。そのしきい値よりも問合せに時間がかかる場合は、その問合せを印刷します。

Javaプロファイリング

アプリケーションのCPU使用率が高く、データベースの動作速度が期待どおりではない場合、JAVAプロファイリング・ツールを使用できます。これらのツールにより、多くの時間を要するメソッド、コードおよびクラスに関するデータが提供されます。これらのツールを使用すると、実行の発生回数および実行の合計時間に関する問題を解決できます。

Oracle Fusion Middleware Control

Oracle Adaptive Access Managerのパフォーマンスおよびアクティビティの監視には、Fusion Middleware Controlを使用できます。

  1. 「Identity and Access」で「OAAM」を選択して、ホームページに移動します。

    ホームページで、Oracle Adaptive Access Managerのパフォーマンス概要を確認できます。

  2. ホームページの左上にある「Oracle Adaptive Access Manager」メニューから「パフォーマンス・サマリー」を選択して、パフォーマンス・メトリックを表示します。

Fusion Middleware Controlを使用したステータスおよびパフォーマンスの監視の詳細は、『Oracle Fusion Middleware管理者ガイド』のOracle Fusion Middlewareの監視に関する説明を参照してください。

その他の環境依存ツール

その他の環境依存ツールを使用します。

28.3 ポリシーおよびルール - パフォーマンス上の考慮事項

ほとんどの場合、パフォーマンスへの対応時に、ルールおよびポリシーの作成に着目する必要はありません。ただし、どのテクノロジにも言えることですが、パフォーマンスを最大化するのに役立つヒントやコツがありますので、必要に応じて利用してください。この項の考慮事項の大半は、構成に関するものです。

最初に単純な条件のルールを順序付ける

ルール条件の順序を変更すると、時間またはメモリー使用量、あるいはその両方の点でルール評価のパフォーマンスが向上します。プロパティまたは小さな変数をチェックするなど、単純なルールを構成し、評価順序の最初に実行します。自動学習(動的条件)など、複雑な条件を含むルールを構成し、単純なルールの後に実行します。ルールがtrueと評価されると、評価は停止します。たとえば、最初のルールがtrueを返した場合、2番目のルールの評価は試行されません。

ポリシーの構造および動作を検討する

処理に非常に多くの時間を要するルールを分離し、ポリシーを確認してパフォーマンス問題が存在すると思われる場所を特定します。たとえば、ポリシーに関連付けられているすべてのルールを実行する際に非常に時間がかかる場合は、ポリシーに関連付けられているルールが多すぎるか、より高負荷のルールが使用されていることが考えられます。ルールが多すぎる場合は、これらを別々のポリシーに分割することを検討します。高負荷のルールがある場合は、基礎となるSQL問合せの最適化、またはデータベースの最適化/チューニングを検討します。

条件を何度も実行するのは非効率であるため、それらの条件をネストする

結果によってアクションを実行するか、特定のユーザーにスコアを渡す、または機能が有効な場合にスコアを渡すポリシーがあります。特定のユーザーまたは有効な機能を様々なルールで確認するために、いくつもの条件が繰り返される場合は、かわりにその条件をいずれかのポリシーの決定ポイントにし、このポイントから別のフローを続行します。たとえば、条件で特定のタイプのユーザーをチェックする場合、同じ条件を何度も評価することにより同じユーザーが評価されます。条件でユーザーが携帯電話ユーザーかどうかを確認し、該当するユーザーの場合はあるアクションを実行してスコアを渡し、さらにまた、ユーザーが携帯電話ユーザーかどうかを確認して、該当するユーザーの場合は別のアクションを実行して別のスコアを渡す、といった場合です。そのように条件を評価するのではなく、ポリシーをネストする方法を検討します。ユーザーが携帯電話カスタマかどうかを確認し、該当する場合は前述のそれぞれのポリシーを実行するように評価を設定します。この方法の場合、条件が何度も実行されることはありません。

すべてのオーバーライドを評価しなくても済むようにルールを順序付ける

オーバーライドはありますか。オーバーライド(トリガー組合せ)は、ルールの結果をオーバーライドするために使用します。「トリガー組合せ」タブでは、トリガー組合せの各行は、ポリシーを提示しているルールを表します。ポリシーに一連のトリガー組合せがある場合、各行はルールに相当します。縦の列は、トリガーするまたはしないルールの組合せを表します。トリガー組合せは、列1から列2、3、4と移動しながら順に評価し、ルール・リターンが一致すると停止します。

より複雑なルールを特定し、それらのルールが先に評価されるように配置します。最初の列がTrueの場合、2番目の列は評価されません。すべてのオーバーライドが評価されずに済むようにルールを配置します。

必要なルール、パターンおよびログのみを維持する

デプロイメントに必要なリソース・バンドルを特定する

リソース・バンドルは、アプリケーションの国際化のために使用されるロケール固有のデータを含むプロパティ・ファイルです。

すべてのリソース・バンドルが必要かどうか、また、一部のリソース・バンドルは削除できるかどうかを検討します。デプロイメントがマルチリンガルでない場合、またはすべてのリソースおよびロケールが必要ではない場合は、一部のリソース・バンドルについて使用しないことを検討します。

軽量なアプリケーションおよびポリシー/ルール構成を使用する

軽量なアプリケーションおよびポリシー/ルールを使用します。カスタム・デプロイメントでは、ポリシー、ルールおよびアクションの追加時に、必要なリソースを検討します。

28.4 ロギング - パフォーマンス上の考慮事項

ルール・ロギング

ルール・ロギングには大量のデータが含まれます。1日のログイン回数が多いユーザーの場合、ログに書き込まれるデータの行が多くなります。

実行時間がしきい値を超える場合にのみ詳細ルール・ログが作成されるようにルール・ロギングを構成できます。実行時間の長いルール(ランタイム)に関する詳細がロギングされるため、詳細ロギングのオーバーヘッドはかなり大きくなります。必要な最小時間を設定してから詳細ロギングが発生するようにするには、次のプロパティを設定する必要があります。

vcrypt.tracker.rulelog.detailed.minMillis=<time>

ロギング

Oracle Adaptive Access Manager 11gコンポーネントでは、ロギング・インフラストラクチャの一部としてjava.util.loggingパッケージを使用します。このパッケージは、すべてのJava環境で使用できます。OAAMログ出力は、エラーを報告したりOAAMの追加情報を提供するロギング・メッセージを生成します。

どの程度のロギングが必要ですか。ログ・レベルは、どのメッセージをログに書き込むかを定義するために使用されます。ログの出力量を減らすことによりパフォーマンスが向上します。

ロギング構成にアクセスするには:

  1. 管理者としてFusion Middleware Controlにログインします。

  2. 「WebLogicドメイン」で「oaam_server_server1」をクリックします。

  3. 「WebLogic Server」タブ、「ログ」を開き、「ログ構成」を選択します。

  4. 「ログ・レベル」をクリックし、「ルート・ログ出力」→「oracle」→「oracle.oaam」を開きます。

  5. ログ・レベルを必要なレベルに設定します。

28.5 データベース - パフォーマンス上の考慮事項

データベース・アクティビティの量

データベース・アクティビティの量は、いくつかの要因によって決まります。

プロパティbharosa.db.query.performance.warning.threshold.msがゼロに設定されている場合、OAAMではすべてのSQLを出力します。

このプロパティを設定し、通常のログインを試行した後で、ログ・メッセージから文字列ms execution forまたはSQLCallをgrepしてください。

これにより、データベースの標準的なログイン・アクティビティを見積もることができます。

使用領域を判別するためのデータベース問合せ

次の問合せを使用すると、表内の行の平均サイズを判別できます。

. 
select table_name, 
          avg_row_len 
   from   user_tables 
. 

次の問合せを使用すると、表の索引のサイズを判別できます。

. 
   select inds.table_name, 
          inds.index_name, 
          sum( inds.sizes ) as index_bytes_per_row 
   from   (               
           select i.index_name, 
                  i.table_name, 
                  i.column_name, 
                  decode(data_type, 'DATE'    , 7, 
                                    'CHAR'    , data_length,   
                                    'VARCHAR2', decode( 
sign(data_length)-250, -1, .7*data_length+3, .7*data_length+1), 
                                    'NUMBER'  , 
floor(nvl(data_precision,38)/2)+2 ) as sizes 
           from   user_ind_columns i, 
                  user_tab_columns t 
           where  t.TABLE_NAME = i.table_name AND 
                  t.COLUMN_NAME = i.COLUMN_NAME 
           order by i.table_name, i.column_name 
          ) inds 
   group by inds.table_name, inds.index_name;

データベースのチューニング・プラクティス

OAAMには、パフォーマンス・テストに基づいて即時利用できるように作成された索引があります。

Oracleのパーティション化オプション

パーティション化は、Oracle Database 11g Enterprise Editionの即時利用可能な機能を拡張するオプションの1つです。

OAAMデータベース索引の競合 - Oracle Real Application Cluster (RAC)固有

高い索引競合が発生した場合、次の索引をパーティション化します。

また、VT_USER_PROFILE表もパーティション化します。

データベースのI/O (入力/出力)

データベースのI/O (入力/出力)パフォーマンスに関する問題は、問合せの実行に時間がかかる場合に発生することがあります。

監査および問合せ

問合せや監査のアクティビティにより本番の問合せや監査のアクティビティにより索引および表領域に対して多数の順次読取りや表スキャンが実行される傾向があります。パフォーマンスへの影響を軽減するには、DataGuard (ロジカル・スタンバイ・データベースを使用したレポートの問合せ、監査および実行を選択できます)を使用してロジカル・スタンバイ・データベースを管理することを検討してください。ロジカル・スタンバイ・データベースには、過去1時間を除くすべての本番データが含まれます。本番データベース・インスタンスは、挿入や更新などの実行、またアクティブな監視やアラートに対しても使用できます。

28.6 メモリー - パフォーマンス上の考慮事項

メモリーでの実行

ほとんどの実行がメモリーで処理されるようにアプリケーションまたはコンテンツを構成します。

キャッシュ

キャッシュは、問合せ結果を格納して、後で使用できるようにする機能を持ちます。毎回データベースから情報を取得するのではなく、キャッシュを使用して問合せの結果を返します。情報がすでにキャッシュに存在していることが望ましいとされます。たとえば、ユーザー登録のキャッシュなどです。

キャッシングに関連する高メモリー使用率

最大キャッシュ・サイズを制御するために使用できるプロパティがあります。このようなプロパティを次に示します。

表28-1 キャッシュ・サイズ・プロパティ

プロパティ名 キャッシュされるオブジェクト デフォルト値

vcrypt.fingerprint.cache.maxsize

フィンガープリント

10000

bharosa.tracker.location.location.cache.maxsize

IPの場所

1000

bharosa.tracker.location.city.cache.maxsize

市区町村

1000

bharosa.tracker.location.state.cache.maxsize

都道府県

1000

bharosa.tracker.location.country.cache.maxsize

1000


変更後、サーバーの再起動が必要です。

適切なプロパティを設定した場合、キャッシュは設定したサイズまで増加し、一杯になった後は、新しいエントリが挿入されると、使用日時が最も古いエントリが削除されます。

ディスクI/Oの削減

28.7 ネットワーク - パフォーマンス上の考慮事項

ネットワーク・コール

リモート・データベースの場合、データベースの問合せに複数のホップが必要になる可能性があります。ホップ数が増えるほど、ソースから宛先にデータが到達するまでにより時間がかかります。また、Webサービス/SOAPを使用していて、作成されるセッション数が多い場合は、入力に影響が及ぶ可能性もあります。

SOAPコール

ネットワークに問題があるかどうか確認します。

タイムアウトの回数を調べます。ネットワークが正しく設定されていることを確認します。

.Net/SOAPのWebサービス統合OAAMデプロイメントが遅い

.Net/SOAPアプリケーションとOAAMサーバーの間のネットワーク通信が最適化されていることを確認します。遅延を発生させる余分なホップはなくす必要があります。

28.8 ハードウェア - パフォーマンス上の考慮事項

インフラストラクチャ

CPUサイクル

要求を満たすためのCPUリソースが不十分な場合、パフォーマンス問題が発生する可能性があります。たとえば、キャッシュが不十分な場合や、システムが要件を満たせない場合などです。CPUの負荷と使用量を確認してください。

28.9 OAAMパフォーマンスの例

ハイエンドなネイティブ統合

1,000万人のエンド・ユーザー

OAAM APIコールおよびその他のオーバーヘッドが合計500msから600ms

1秒当たり100件から150件のトランザクション

40個から50個のルール

一般的なシングル・サインオン統合

100万人のエンド・ユーザー

OAAM APIコールの場合、200msから300ms

1秒当たりにロードされるトランザクションは30件から50件

30個から40個のルール