BEA ホーム | 製品 | デベロッパ・センタ | support | askBEA
 ドキュメントのダウンロード   サイト マップ   用語集 
検索

WebLogic Integration ソリューションのデプロイメント

 前 次 目次 索引 PDFで表示  

パフォーマンスのチューニング

以下の節では、WebLogic Integration デプロイメントのパフォーマンスをチューニングする方法について説明します。

 


WebLogic Integration のパフォーマンスのチューニング

以下の節では、WebLogic Integration のパフォーマンスのチューニング方法について説明します。

一次チューニング リソース

この節では、サーバが実行する作業を管理するためのチューニング可能な WebLogic Integration の一次リソースについて説明します。

その他の WebLogic Integration リソースはすべて、一次リソースをサポートするためにのみ変更します。

WebLogic Server のパフォーマンスをチューニングする

以下の節では、WebLogic Integration デプロイメント用の WebLogic Server リソースのコンフィグレーション方法について説明します。

WebLogic Server のパフォーマンスのチューニングの概要については、次の URL にある『BEA WebLogic Server パフォーマンス チューニング ガイド』を参照してください。

http://edocs.beasys.co.jp/e-docs/wls/docs70/perform/index.html

EJB のプール サイズおよびキャッシュ サイズをコンフィグレーションする

EJB のプール サイズおよびキャッシュ サイズをコンフィグレーション、つまりデフォルト設定で開始して必要に応じて変更することで、WebLogic Integration のパフォーマンスをチューニングできます。一般に、パフォーマンスという点では、プールまたはキャッシュのサイズは小さすぎるよりも大きすぎる方が問題は少なくなります。これらの設定の詳細については、次の URL にある『WebLogic エンタープライズ JavaBeans プログラマーズ ガイド』の「WebLogic Serverへの EJB のデプロイ」を参照してください。

http://edocs.beasys.co.jp/e-docs/wls/docs70/ejb/deploy.html

BPM イベント リスナ メッセージ駆動型 Bean のプール サイズをコンフィグレーションする

wlpi-mdb-ejb.jar ファイルには、イベント キューのイベントを取り出すイベント リスナ メッセージ駆動型 Bean のプールが格納されています。プール サイズの設定は、受け取ったイベントに基づいて、WebLogic Integration システムで実行されるワークフロー数を制御します。イベントおよび検証イベントキュー用のmessage-driven bean 同様、時限イベント リスナも、wlpi-mdb-ejb.jar ファイルで指定されたクラスタにデプロイされます。これらのmessage-driven bean は、com.bea.wli.bpm.TimerQueueから作業を取り出します。

EventListener と TimeListener のデフォルトのプール サイズにアクセスするには、Administration Console でWLI-BPM イベント プロセッサ EJB (wlpi-mdb-ejb.jar) に対する [EJB 記述子の編集] を選択します。たとえば、イベント リスナ message-driven bean のデフォルト設定は 10 (順序付けされているリスナと順序付けされていないリスナが 5 つずつ) です。

システムに対してカスタム JMS キューをコンフィグレーションする場合は、MDB Generator ユーティリティを使用してプールサイズと関連付けられたキューを設定します。『WebLogic Integration の起動、停止およびカスタマイズ』、「WebLogic Integration のカスタマイズ」の「カスタム Java Message Service キューのコンフィグレーション」を参照してください。

最初は20個のBeanを設定し、モニタを行って Bean の追加が必要かどうか判断することをお勧めします。詳細については、メッセージ駆動型 Bean 数の確認するを参照してください。

その他の EJB のプール サイズおよびキャッシュ サイズをコンフィグレーションする

システムのチューニングを行う場合、以下のキャッシュおよびプール サイズについて考慮することをお勧めします。これらのパラメータは、WebLogic Integration クラスタ内のノードごとにチューニングすることができます。

BPM ワークフロー プロセッサ Beanのキャッシュサイズ

BPM ワークフロー プロセッサ Bean については、ワークフロー プロセッサ Bean参照。

このキャッシュ サイズは、BPM イベント リスナ メッセージ駆動型 Bean プールのサイズと同じかそれ以上とする必要があります。また、サブワークフローや Worklist クライアントからの予想される負荷にも対応できる値を設定する必要があります。デフォルト設定は 100 です。WorkflowProcessor EJB とその Max Beans In Cache の設定にアクセスするには、WebLogic Server Administration Console で [Edit EJB Descriptor for the WLI-BPM Server EJB (wlpi-ejb.jar)] を選択します。

BPM テンプレート エンティティ Bean のキャッシュ サイズ

BPM テンプレート エンティティ Bean については、テンプレート Bean参照。

このキャッシュ サイズには、WebLogic Integration システムで同時に処理するユニークなテンプレートの数と同じかそれ以上の値を設定する必要があります。デフォルト設定は 100 です。TemplateDefinitionRO EJB とその [Max Beans In Cache] の設定にアクセスするには、WebLogic Server Administration Console で [Edit EJB Descriptor for the WLI-BPM Server EJB (wlpi-ejb.jar)] を選択します。

BPM テンプレート エンティティ Bean のキャッシュ サイズ

BPM テンプレート エンティティ Bean については、インスタンス Bean参照。

このキャッシュ サイズには、ワークフロー インスタンス プロセッサ数と同じかそれ以上の値を設定する必要があります。デフォルト設定は 100 です。WorkflowInstance EJB とその [Max Beans In Cache] の設定にアクセスするには、WebLogic Server Administration Console で [Edit EJB Descriptor for the WLI-BPM Server EJB (wlpi-ejb.jar)] を選択します。

アプリケーション ビューの ステートレス セッション Bean のプールサイズ

アプリケーション ビューの ステートレス セッション Bean については、Application Integration リソースを参照。

Max Beans In Free Pool のデフォルト設定は 200 で、ほとんどのデプロイメントではこの値で十分です。com.bea.wlai.client.ApplicationView EJB とそのプールの設定値にアクセスするには、WebLogic Server Administration Console で、[ Edit EJB Descriptor for the WLI-AI Server EJB (wlai-server-ejb.jar)]を選択します。

アプリケーション ビューの ステートフル セッション Bean のキャッシュ サイズ

Max Beans In Cache のデフォルト設定は 100 です。com.bea.wlai.client.StatefulApplicationView EJB とその [Stateful Session Cache] の設定にアクセスするには、WebLogic Server Administration Console で [Edit EJB Descriptor for the WLI-AI Server EJB (wlai-server-ejb.jar)] を選択します。

非同期サービス プロセッサ message-driven bean のプール サイズ

非同期サービス プロセッサmessage-driven beanについては、Application Integration リソースを参照。

Max Beans In Free Pool のデフォルト設定は 1000 です。WLI-AI Async Processor message-driven bean とそのプールの設定にアクセスするには、Administration Console で、[Edit EJB Descriptor for the WLI-AI Async Processor EJB (wlai-asyncprocessor-ejb.jar)] を選択します。

イベント プロセッサ message-driven bean のプール サイズ

イベント プロセッサ message-driven beanについては、Application Integration リソースを参照。

Max Beans In Free Pool のデフォルト設定は 1000 です。WLI-AI イベント プロセッサ message-driven bean とそのプールの設定にアクセスするには、Administration Console で、[Edit EJB Descriptor for the WLI-AI Event Processor (wlai-eventprocessor-ejb.jar)] を選択します。

JDBC 接続プールのサイズをコンフィグレーションする

JDBC 接続プールのサイズをコンフィグレーションすることで、WebLogic Integration のパフォーマンスをチューニングできます。概要については、JDBC 接続プールを参照してください。

WebLogic Integration クラスタ内の各ノードで必要な JDBC 接続プールのサイズを決めるには、次の表のガイドラインに基づいて、サーバごとに必要な接続数を計算します。

表6-1 JDBC 接続プールの接続数の計算

対象リソース

必要な JDBC 接続数の計算方法

BPM イベント リスナ メッセージ駆動型 Bean (順序付けされていない Bean + すべての順序付けされている Bean)。

イベント リスナ メッセージ駆動型 Bean のプール サイズに 2 を掛ける。たとえばイベント リスナ メッセージ駆動型 Bean のプール サイズが 10 の場合、JDBC 接続プールに 20 接続を追加する。

イベント リスナは常に、少なくとも 1 つ、場合によっては 2 つの JDBC 接続を使用する。最大数を使用する場合を想定して因子 2 を掛けているので、必要であれば、計算値よりも小さい値を使用できる。

注意: Worklist クライアントからワークフロー プロセッサを実行する場合、さらに接続数を追加する必要がある。

B2B Integration

JDBC 接続プールに 10 接続を追加する。

Application Integration

アプリケーション ビュー Bean (デフォルトは 5) ごとに 1 接続を追加し、非同期要求プロセッサ リスナ(デフォルトは 2)ごとに 1 接続を追加する。

Application Integration アダプタ

アダプタ(イベント アダプタとサービス アダプタ)で必要な数の接続を追加する。たとえば DBMS アダプタの場合は、J2EE-CA リソース コネクタ プール内のリソースごとに 1 接続を追加する。


 

各リソースに必要な接続数を計算したら、すべてのリソースに必要な合計を計算し、その値に基づいてクラスタ内の各ノードの JDBC 接続プールをコンフィグレーションします。

パフォーマンスを最適化するには、初期容量と最大容量に同じ値を設定してください。

JDBC 接続のモニタ方法については、JDBC 接続数を確認するを参照してください。

JDBC 接続プールの詳細については、以下の節を参照してください。

実行スレッド プールをコンフィグレーションする

実行スレッド プールで説明されているように、実行スレッド プールをコンフィグレーションすることで、WebLogic Integration のパフォーマンスをチューニングできます。WebLogic Integration クラスタ内の各ノードについて、次の表のガイドラインに基づいて実行スレッド数を計算します。

表6-2 実行スレッド数の計算

対象リソース

必要な実行スレッド数の計算方法

BPMBPM

BPM のオーバーヘッド用に 1 スレッドを追加する。

BPM イベント リスナ メッセージ駆動型 Bean

イベント リスナ メッセージ駆動型 Bean ごとに 1 スレッドを追加する。

同時 Worklist クライアント要求

予想される同時 Worklist クライアント要求ごとに 1 スレッドを追加する。

B2B IntegrationB2B Integration

RosettaNet または ebXML message-driven bean ごとに 2 スレッドを追加する。

Application Integration

Application Integration のオーバーヘッド用に 1 スレッドを追加する。

Application Integration アダプタ

アダプタごとに 3 スレッドを追加する。

アプリケーション

アプリケーション用として必要な数の実行スレッドを追加する。


 

各リソースに必要なスレッド数を計算したら、すべてのリソースに必要な合計を計算し、その値に基づいてクラスタ内の各サーバのスレッド プール サイズをコンフィグレーションします。

WebLogic Server Administration Console を使用してスレッド プール サイズをコンフィグレーションする方法については、次の URL にある『Adminstration Console オンライン ヘルプ』、「サーバ」の「サーバ コンフィグレーション タスク」を参照してください。

http://edocs.beasys.co.jp/e-docs/wls/docs70/ConsoleHelp/servers.html				

スレッドのモニタ方法については、スレッド数を確認するを参照してください。

J2EE コネクタ アーキテクチャ アダプタ用のリソース接続プールをコンフィグレーションする

J2EE コネクタ アーキテクチャ(J2EE-CA)アダプタのリソース接続プールをコンフィグレーションすることで、WebLogic Integration のパフォーマンスをチューニングできます。J2EE コネクタ アーキテクチャを参照してください。特定のアダプタのリソース接続プールをチューニングする方法については、アダプタのマニュアルを参照してください。

B2B の大容量メッセージ サポートをコンフィグレーションする

B2B の会話時に交換されるメッセージが大きくメモリに収まらない場合、WebLogic Integration B2B Console で大容量メッセージ サポート機能を有効にしてから、サーバを再起動します(20MB を超えるメッセージは、大容量メッセージとみなされる)。図6-1 は、大容量メッセージ サポート機能を有効にする際に使用するコンソール パネルの領域です。

注意: 大容量メッセージに対する EJB トランザクションのコンフィグレーションに関する詳細については、EJB トランザクションをコンフィグレーションするを参照してください。

図6-1 B2B Console の大容量メッセージ サポート領域


 

EJB トランザクションをコンフィグレーションする

メッセージ処理中にトランザクション タイムアウトを示す例外が返される場合は、次の BPM リソースにあるトランザクション タイムアウト パラメータをチューニングすることをお勧めします。

注意: トランザクション タイムアウトは、容量の小さいメッセージの場合より大容量メッセージの処理中の方が発生しやすくなります。

トランザクションタイムアウトパラメータをチューニングするには、wlpi-ejb.jar ファイルと wlpi-mdb-ejb.jar ファイルの trans-timeout-seconds 属性を、90 秒から 1090 秒に変更することをお勧めします。JAR ファイルにアクセスする手順は次のとおりです。

  1. Administration Console のナビゲーション ツリーで [デプロイメント|EJB] を選択します。

  2. [WLI-BPM Server EJB] または [WLI-BPM Event Processor EJB] を選択します。

  3. [Edit EJB Descriptor] をクリックして、EJB 記述子の編集ができる新しいウィンドウを表示します。

Java 仮想マシン(JVM)をモニタおよびチューニングする

Java 仮想マシン(JVM)は、WebLogic Integration Java コードの実行場所です。WebLogic Integration デプロイメントのパフォーマンスを最適化するには、JVM のコンフィグレーションをチューニングします。たとえば、JVM ヒープ サイズによって、VM がガベージ コレクションを行う頻度と時間が決定されます。WebLogic Integration の場合、最小推奨ヒープ サイズは 512KB です。JVM のコンフィグレーションの詳細については、次の URL にある『BEA WebLogic Server パフォーマンス チューニング ガイド』の「Java 仮想マシン(JVM)のチューニング」を参照してください。

http://edocs.beasys.co.jp/e-docs/wls/docs70/perform/JVMTuning.html

Sun HotSpot JVM ヒープの構成とガベージ コレクションの詳細については、次の URL を参照してください。

http://java.sun.com/docs/hotspot/gc/index.html

Sun Hotspot JVM のコマンドライン オプションの完全なリストについては、次の URL を参照してください。

http://java.sun.com/docs/hotspot/VMOptions.html

JVM オプションの多くは、setenv.cmd または setenv.sh、および startWeblogic.cmd または startweblogic.sh で設定します。ローエンド システムに対応するため、一部のデフォルト値は低めに設定されています。大規模システムの場合は、JVM をチューニングすることでパフォーマンスを向上させることができます。次の節では、一般的に使用されるオプションについて説明します。

JVM を選択する

WebLogic Server に付属する JDK のバージョンは、何種類かの JVM 実装をサポートしています。Solaris では、サーバ JVM を使用することをお勧めします。サーバ JVM の使用を指定するには、-server 引数を使用します。この引数は、Java 実行プログラム名の直後に指定する必要があります。

Windows システムでは、Hotspot JVM を使用します(WebLogic Integration スクリプトでは、デフォルトでは、-hotspot オプションが使用される)。Windows システムでの Hotspot JVM の使用に問題が発生する場合は、スクリプトに次のオプションを追加することをお勧めします。

-xxMaxPermSize=131072K

Classic JVM では、JIT コンパイラが使用できない、推奨していません。また、Classic JVM を使用すると、Hotspot JVM や サーバ JVM を使用した場合に比べ、サーバの実行速度が低下します

実行時に使用されるコンパイル アルゴリズムを除くと Hotspot JVM とサーバ JVM は、まったく同様です(Hotspot JVM は、クライアント JVM と呼ばれることもある)。

JVM ヒープ サイズをチューニングする

JVM ヒープの最小(初期)サイズと最大サイズは、同じにします。大規模な WebLogic Integration サーバの場合、次のオプション設定のように両方のサイズを 512MB にすることをお勧めします。

-Xms512m -Xmx512m

Solaris システムでは、非常に大きなヒープ向けの追加オプションが用意されています。仮想メモリを使用せずに、物理メモリをヒープに対して直接使用できるオプションは、特に重要です。この機能は、「Intimate Shared Memory(親和型共有メモリ)」と呼ばれます。詳細については、以下のURL を参照してください。

http://java.sun.com/docs/hotspot/ism.html

Hotspot JVM でのガーベジコレクション制御

Hotspot JVM のヒープ領域は、育成ヒープと終身ヒープという 2 つの領域に分割されます。

すべての新しいオブジェクトは、育成ヒープで作成されます。ガベージ コレクションの実行後に残ったオブジェクトのみが、育成ヒープから終身ヒープに移されます。終身ヒープのガベージ コレクションは、終身ヒープほど頻繁には実行されず、そのコレクション処理は、育成ヒープに対するコレクション処理よりもコストが高くなります。

一般的に、育成ヒープのコンフィグレーション時には、一時オブジェクトを格納するのに十分なサイズを設定してください。一般的なアプリケーション サーバ、特に WebLogic Integration の場合、アプリケーションの実際の状態はデータベースに保存されます。要求の処理中に割り当てられたメモリの大部分は、要求が終了すると解放されます。したがって、1 つの要求の中で使用されるオブジェクトが終身ヒープに移されることを防ぐには、育成ヒープのコンフィグレーション時に十分な容量を割り当てることが重要になります。このようにコンフィグレーションすることで、育成ヒープでのガベージ コレクションに比べ、終身ヒープに対するガベージ コレクションの頻度が大幅に減ります(このため、この方法はガベージ コレクションの頻度低下と呼ばれることがある)。

育成ヒープのガベージ コレクションは世代別に実行されます。一般的なガベージコレクションでは、すべての新しいオブジェクトは、育成ヒープ領域から割り当てられます。育成ヒープ領域のすべてのオブジェクトは、オブジェクトの若い世代を構成します。育成ヒープ領域がフルになると、ガベージ コレクタは、部分的なガベージ コレクションを実行します。また、アクセスできなくなった、言い換えれば死滅したオブジェクトが占有していた育成領域のメモリを回復します。育成領域にある、まだ生存しているオブジェクトは、古いオブジェクトを格納するメモリ領域に移動します。世代別ガベージ コレクションの場合、ガベージ コレクタは死滅したオブジェクトのすべてのメモリを検索する必要がないため、フル ガベージ コレクションと比べて、大幅に実行速度が向上します。

ガベージ コレクションおよび JVM パフォーマンスについての詳細は、次の URL にある、『 A Test of JavaTM Virtual Machine Performance』を参照してください。

http://developer.java.sun.com/developer/technicalArticles/Programming/JVMPerf/

グローバル ヒープが 512MB の場合、育成ヒープの妥当なサイズを 128MB にすることをお勧めします。次のコマンドラインの指定では、初期育成ヒープ サイズは 128MBに、サイズの最大値は128MBに、それぞれ設定されています。

-XX:NewSize=128m -XX:MaxNewSize=128m

育成領域は、Eden 領域 1 つと同サイズの下位領域 2 つから構成されています。ガベージ コレクションの実行中に、最後まで残るオブジェクトは下位領域に移動します。サバイバル領域は、2つの下位領域を合わせたサイズです。

サバイバル領域のサイズをチューニングするには、SurvivorRatio パラメータを使用します。サバイバル領域の比率の初期推奨値は 2 です。アプリケーションをモニタして、この値を変更する必要があるかどうか判断します。サバイバル領域の比率を 2 と指定するには、次のオプション設定を使用します。

-XX:SurvivorRatio=2

このパラメータにより、Eden 領域と下位領域の比率は 2:1 となります。言い換えれば、Eden 領域のサバイバル領域に対する比率は 1:1 で、各下位領域は、育成ヒープのサイズの 1/4 です(同じサイズの下位領域が 2 つあるので 1/2 にはならない)。サバイバル領域が小さすぎた場合、コレクションのコピー時に、直接古い世代用の領域にオーバーフローしてしまいます。サバイバル領域が過剰に大きい場合は、無用な空き領域が発生します。

JVM のヒープ使用率をモニタする

次のフラグを指定して、冗長ガベージ コレクションを有効にすると、ヒープの使用率とガベージ コレクションを最も効率的にモニタできます。

-verbosegc

結果は、標準形式で出力されます。Hotspot JVM の場合は、2 種類の行が表示され、Eden (GC) ヒープおよび 終身ヒープ(フル GC)内のコレクション数が示されます。

また、Weblogic Server Administration Console を使用して、実行時のヒープ使用率をモニタすることもできます。これは、ヒープの要件を定義したり、メモリのリークを識別する際に便利です。

 


実行時パフォーマンスのモニタおよびチューニング

以下の節では、WebLogic Integration のデプロイメントで実行時のパフォーマンスをモニタする方法について説明します。

WebLogic Server のパフォーマンスをモニタおよびチューニングする

WebLogic Server Administration Console を使用すると、サーバ、JDBC 接続プール、JCA、HTTP、JTA サブシステム、JNDI、EJB などのリソースを含む WebLogic Server ドメインの状態とパフォーマンスをモニタできます。詳細については、次の URL にある『BEA WebLogic Server ドメイン管理』の「WebLogic Server ドメインのモニタ」を参照してください。

http://edocs.beasys.co.jp/e-docs/wls/docs70/admin_domain/monitoring.html

スレッド数を確認する

システムに十分なスレッドがコンフィグレーションされているかを判断する手順は次のとおりです。

  1. WebLogic Server Administration Console のナビゲーション ツリーで、サーバ名を選択します。

  2. [モニタ] タブ、[一般] タブの順に選択します。

  3. [すべてのアクティブなキューのモニタ] をクリックします。

    次の図は、WebLogic Server Administration Console に表示されるアクティブ キューに関する情報を示したものです。

図6-2 アクティブ実行キュー テーブル


 

ThreadPoolSize パラメータが、スレッド数を制御します。ThreadPoolSize パラメータは、サーバごとに個別に設定されます。

  1. WebLogic Server Administration Console のナビゲーション ツリーで、サーバ名を選択します。

  2. [モニタ] タブ、[パフォーマンス] タブの順に選択します。

    [スループット]、[キューの長さ]、[メモリ使用状況] の3つのグラフが表示されます。[アイドル スレッド数] フィールドは、グラフの上に表示されます。次の図は、WebLogic Server Administration Console に表示されるパフォーマンスに関する情報を示したものです。

図6-3 サーバのパフォーマンス情報


 

  1. [アイドル スレッド数] フィールドにゼロが表示されることがある場合は、スレッドを追加する必要があります。

スレッドを追加するには、次のように、デフォルト キューを選択して、スレッド数を指定します。

  1. WebLogic Server Administration Console のナビゲーション ツリーでサーバを選択し、次に、[モニタ|一般] タブを選択します。

  2. [すべてのアクティブなキューのモニタ] をクリックします。

  3. [Execute Queue のコンフィグレーション] を選択します。

    次の図のように、実行キュー情報が WebLogic Server Administration Console に表示されます。

    図6-4 実行キュー テーブル


     

スレッドは、次のようにして指定することができます。

  1. WebLogic Server Administration Console のナビゲーション ツリーで、サーバ名を右クリックしてドロップダウン メニューを表示します。

  2. ドロップダウン メニューから [実行キューを見る] を選択して、次の図に示すとおりのウィンドウを表示します。スレッド数を指定します。

    図6-5 デフォルトの実行キーのコンフィグレーション


     


     

Solaris システムでは、スレッド数の変更によってパフォーマンスが向上するかどうかを調べるには、負荷レベルを変えずにスレッド数の設定変更の前後に mpstat コマンドを実行します。コンテキストが切り替わる回数が低下すれば、パフォーマンスが向上したことになります。

トランザクションの実行回数を確認する

各種トランザクションの実行回数を表示するには、Weblogic Server Administration Console で該当するサーバ名を選択します。右フレームで、[モニタ] タブ、[JTA] タブの順に選択します。[すべてのインスタンスのモニタ] を選択します。

BPM フレームに関連付けられている一部のトランザクションは、変更できません。アプリケーションに関連付けられているトランザクションは変更可能です。トランザクション タイプを変更したり、トランザクションを組み合わせるには、次の手順を実行します。

  1. Administration Console のナビゲーション ツリーでサーバを選択します。

  2. [モニタ] タブを選択してから、[JTA] タブを選択して、次の図に示すように、トランザクションをモニタする際に使用するウィンドウを表示します。—>

    図6-6 [モニタ] タブ


     

JDBC 接続数を確認する

JDBC 接続はデータベースへの接続で、データベースにアクセスするたびに新しい接続を確立する必要がなくなるため、スレッドのパフォーマンス問題を回避できます。JDBC 接続用に複数のプールを設定できます。各プールに十分な接続数を設定し、スレッド接続の待機時間が長くならないようにしてください。アクティブ JDBC 接続プールをモニタする手順は次のとおりです。

  1. WebLogic Server Administration Console のナビゲーション ツリーで [サービス] を選択します。

  2. [JDBC|接続プール] を選択して、すべての JDBC 接続メイン ウィンドウに表示します。

  3. プールの名前をクリックしてから [Monitor All Active Pools] をクリックして、次の図のように、アクティブ JDBC 接続を表示します。

図6-7 JDBC 接続プール


 

  1. [接続] の欄を、表示される接続数が、このプールに対してコンフィグレーションされている合計接続数に近い値であるかをチェックします。[最大接続数] の値が、このプールに対してコンフィグレーションされている合計接続数と等しいかをチェックします。この 2 つのどちらか一方でも当てはまる場合、同様の状況下または負荷が少し増加した場合に、接続数を増やします。

接続プールのコンフィグレーションを変更する手順は次のとおりです。

  1. Administration Console のナビゲーション ツリーで [サービス] を選択します。

  2. [JDBC|接続プール|wliPool] を選択します。

  3. メイン ウィンドウで、[接続] タブを選択します。

    図6-8 接続プールのコンフィグレーション


     

  4. [初期容量] フィールドと [最大容量] フィールドの値を同じ数に設定します。

BPM のパフォーマンスをモニタおよびチューニングする

WebLogic Integration Studio を使用すると、ワークフローおよびワークフロー変数のステータスを含むワークフローのパフォーマンスのさまざまな側面をリアル タイムでモニタできます。Studio では、ワークフロー インスタンスを削除したり、負荷およびパフォーマンスの統計に関するレポートを表示したりすることができます。詳細は、『WebLogic Integration Studio ユーザーズ ガイド』の「ワークフローのモニタリング」を参照してください。

BPM のパフォーマンスの主な測定項目は以下のとおりです。

これらのパフォーマンス測定項目の統計値を取得する 1 つの方法は、SQL 文を使用してデータベース インスタンス テーブルから統計値を抽出することです。たとえば、次の SQL コードでは、インスタンス数に関する統計値が計算されます。

コード リスト 6-1 ワークフロー インスタンスの統計値を調べるための SQL コード

select 'INSTANTIATIONS', count(*),
avg((completed-started)*86400),
max((completed-started)*86400),
86400*(max(started)-min(started)) total_duration,
from instance

次の SQL コードでは、終了数に関する統計値が計算されます。

コード リスト 6-2 ワークフロー終了数の統計値を調べるための SQL コード

select 'COMPLETIONS',  count(*),
avg((completed-started)*86400),
max((completed-started)*86400),
86400*(max(completed)-min(started)) total_duration
from instance where completed is not null

メッセージ駆動型 Bean 数の確認する

メッセージ駆動型 Bean に関する情報を表示する手順は、次のとおりです。

  1. WebLogic Server Administration Console のナビゲーション ツリーで、サーバ名を選択します。

  2. [モニタ] タブ、[JMS] タブの順に選択します。

  3. [すべての JMS サーバのモニタ] をクリックします。

  4. [アクティブな JMS の送り先] をクリックします。次の図に示すように、アクティブな JMS 送り先が表示されます。

図6-9 イベント キューのモニタ


 

  1. WLI_BPM_Event のキューの長さ(待機中のメッセージ)を確認します。この値が大きい場合には、パフォーマンスの最適化を妨げるキューが発生しています。この場合、message-driven bean を追加するとパフォーマンスが向上します。

message-driven bean の数を変更する手順は次のとおりです。

  1. Administration Console のナビゲーション ツリーで [デプロイメント|EJB] を選択します。

  2. [WLI-BPM Event Processor] を選択します。

  3. [EJB 記述子の編集] をクリックして、EJB 記述子の編集ができる新しいウィンドウを表示します。

  4. 左のナビゲーション ウィンドウで、[weblogic-ejb-jar|weblogic-enterprise-bean|EventListener|message-drive-destination|プール] を選択して、次の図のようなコンフィグレーション ウィンドウを表示します。

    図6-10 MDB のコンフィグレーション


     

  5. [max-beans-in-free-pool] のパラメータ値を編集します。

  6. 変更内容を有効にするには、WebLogic Server を再起動する必要があります。

Bean タイプ数を確認する

WebLogic Server Administration Console を使用して、Bean のタイプと数量を表示できます。

  1. Administration Console のナビゲーション ツリーで [デプロイメント|EJB] を選択します。

  2. 特定の EJB の名前を選択します。たとえば、WLI-BPM Server を選択します。

  3. メイン ウィンドウでは、[モニタ] タブと表示する Bean のタイプを選択します。たとえば、ステートフル セッション Bean に関する情報を表示するには、[すべてのステートフル EJB ランタイムのモニタ] をクリックします。

  4. 表示する情報を変更するには、[このビューをカスタマイズ...] をクリックします。列を追加または削除したり、ソート順序を変更したりできます。

    以下の列は、特に重要です。

    以下の JAR ファイルは、特に重要です。

これらの JAR ファイルの詳細については、EJB のプール サイズおよびキャッシュ サイズをコンフィグレーションするを参照してください。次の各図(図6-11図6-12図6-13)は、ステートフル Bean、エンティティ Bean、およびメッセージ駆動型 Bean が表示されるウィンドウの領域を示したものです。

次の図は、WLI-BPM Server EJB (wlpi-ejb.jar)に対するステートフル EJBRuntimesb を示しています。

図6-11 ステートフル Bean 情報


 

次の図は、WLI-BPM Server EJB (wlpi-ejb.jar) に対するエンティティ EJBRuntimesb を示しています。

図6-12 エンティティ Bean 情報


 

次の図は、WLI-BPM イベント プロセッサ EJB (wlpi-mdb-ejb.jar) に対するメッセージ駆動型 EJBRuntimes を示しています。

図6-13 MDB 情報


 

キャッシュ フルに関するシステム メッセージが表示される場合、EJB 記述子を編集して、Cache パラメータで該当する EJB の [Max Beans] の値を増やします。

キャッシュがフルになるまでパッシベーションが行われないエンティティ Bean が多数ある場合は、そのエンティティ Bean の Idle Timeout Seconds パラメータ値を小さくできます。

  1. Administration Console のナビゲーション ツリーで [デプロイメント|EJB] を選択します。

  2. 特定の EJB の名前を選択します。たとえば、WLI-BPM Server を選択します。

  3. [EJB 記述子の編集] をクリックして、EJB 記述子の編集ができる新しいウィンドウを表示します。

  4. 左のナビゲーション ウィンドウで、[weblogic-ejb-jar|weblogic-enterprise-bean|WorkflowProcessor |stateful-session-descriptor|stateful-session-cache] を選択して、次の図のようなコンフィグレーション ウィンドウを表示します。

  5. Idle Timeout Seconds パラメータを編集します。

    図6-14 アイドル タイムアウトのコンフィグレーション


     

メッセージ送信を保証する

ビジネス プロセスの設計要件に応じて、ワークフローへのメッセージの送信を保証する 2 つの機能を活用すると便利な場合があります。この節で要約する機能は、具体的には、JMS クライアントからワークフローに送信されるメッセージに適用されます。これには、ワークフロー間のメッセージ送信が含まれます。トレーディング パートナ間で送信されるビジネス メッセージは含まれません(トレーディング パートナのビジネス メッセージはデフォルトでアドレス指定メッセージ配信を使用する)。

以下の機能によってメッセージ配信が保証されます。

これら 2 つの機能を併用することで、ワークフローへのメッセージの配信が保証されます。これらの機能の使い方については、以下を参照してください。

アドレス指定メッセージ配信の使い方の例については、『BPM ユーザーズ ガイド』、「サンプルについて」の「ビジネス プロセスおよびワークフローのモデル化」を参照してください。

トレーディング パートナ間のビジネス メッセージの配信に関する詳細については、『B2B Integration ワークフローの作成』を参照してください。

B2B Integration のパフォーマンスをモニタおよびチューニングする

B2B Integration の機能のパフォーマンスをモニタするには、以下のヒントを検討します。

B2B Integration のパフォーマンスの主な測定項目は以下のとおりです。

詳細は、『B2B Integration 管理ガイド』の「B2B Integration のモニタ」を参照してください。

B2B アクティビティをモニタする

WebLogic Integration B2B Console を使用して B2B アクティビティのレベルを判断します。

  1. B2B Console のナビゲーション ツリーで、親ノードの B2B を選択します。

  2. メイン ウィンドウで、[モニタ|ログ] タブの順に選択して、次の図のように、wli.log ファイルを表示します。

図6-15 B2B ログのモニタ


 

  1. メイン ウィンドウで、[モニタ|統計] タブの順に選択して、次の図のように、B2Bの統計データを表示します。

図6-16 B2B 統計のモニタ


 

Application Integration のパフォーマンスをモニタおよびチューニングする

この節では、Application Integration のモニタとチューニングに関する情報を提供します。内容は以下のとおりです。

Application Integration のパフォーマンスをモニタおよびチューニングする

アプリケーション ビューに対して十分な接続数が設定されているかどうかを確認するには、以下の手順で Weblogic Server Administration Console を使用します。

  1. Administration Console のナビゲーション ツリーで [デプロイメント|コネクタ] を選択します。

  2. 該当するアプリケーション ビューに対してデプロイされている接続ファクトリを選択します。接続ファクトリ名は、次の形式で表示されます。

    ApplicationViewName_connectionFactory.

  3. [モニタ] タブを選択し、次に [すべての接続中のコネクタ接続プールのモニタ...] をクリックします。

    次の図に示すように、アプリケーション ビューで定義されている EIS への接続が表示されます。

    JDBC 接続を使用すると、データベースにアクセスするたびに新しい接続を確立する必要がなくなるため、スレッドのパフォーマンス問題を回避できます。各プールに対して十分な接続数を設定し、スレッド接続の待機時間が長くならないようにしてください。

図6-17 アプリケーション ビューの接続のモニタ


 

  1. 接続数を確認してください。

    この 2 つのどちらか一方でも当てはまる場合、同様の状況下または負荷が少し増加した場合に、接続数を増やします。

アプリケーション ビューに対する最大接続数を表示または変更する手順は次のとおりです。

  1. Application View Console を起動します。

  2. アプリケーション ビューを選択してから、[Deploy] タブを選択します。次の図は、プールのサイズに最大値をモニタするのに使用される [Application View Console] タブの使い方を示しています。

図6-18 最大プール サイズのモニタ


 

[Maximum Pool Size] の値は、接続の最大数を表しています。

最大プールサイズの変更手順は次のとおりです。

  1. アプリケーション ビューが現在デプロイされている場合は、[Undeploy] をクリックします。

  2. アプリケーションビューがアンデプロイされているときは、[Edit] をクリックします。

    イベントやサービスを編集できるウィンドウが表示されます。

  3. [Continue] をクリックして、次の図に示すウィンドウを表示します。このウィンドウで、最大プール サイズを編集できます。

図6-19 最大プール サイズのモニタ


 

  1. [Maximum Pool Size] の値(接続の最大数)を編集します。

  2. [Deploy] をクリックして、新しい最大プール サイズを設定したアプリケーション ビューを再デプロイします。

Application Integration 用の EJB プールをモニタおよびチューニングする

Application Integration のパフォーマンスのチューニングを行う場合は、以下の EJB プールのチューニングについて考慮してください。

EJP のプールのモニタリングおよびチューニングに関する情報については、Bean タイプ数を確認するおよびメッセージ駆動型 Bean 数の確認する参照してください。

アプリケーションのプロファイリング

Java プロファイラ ツール(Jprobe や OptimizeIt など)を使用すると、実行時にアプリケーションのプロファイリングできます。これらのツールでは、システムのパフォーマンスのボトルネックやスレッドの競合を識別できます。起動時のパフォーマンスではなく、必ず実行時のパフォーマンスをプロファイリングしてください。

 


ハードウェア、オペレーティング システム、およびネットワークのリソースのチューニング

以下の節では、ハードウェア、オペレーティング システム、およびネットワークをチューニングする際に考慮すべき要因について説明します。

詳細については、次の URL にある『BEA WebLogic Server パフォーマンス チューニング ガイド』の「ハードウェア、オペレーティング システム、およびネットワーク パフォーマンスのチューニング」を参照してください。

http://edocs.beasys.co.jp/e-docs/wls/docs70/perform/HWTuning.html

パフォーマンスのボトルネック

デプロイメントにおける WebLogic Integration のパフォーマンスを最適化するには、以下のハードウェア リソースが互いに会話する方法を理解しておく必要があります。パフォーマンスのボトルネックは、これらのハードウェア リソースが適切にチューニングされていないことが原因で発生します。

表6-3 パフォーマンスのボトルネック

ハードウェア リソース

ボトルネック

CPU

スループットが不十分なため、ページングやスワッピングが頻発する。

メモリ

システム メモリが不十分なため、ページングやスワッピングが頻発する。

ネットワーク リソース

大量のネットワーク トラフィックを処理するだけの帯域幅が不十分である。ネットワークの衝突が頻発する。

ディスク I/O およびコントローラ

大量の I/O 要求を処理するだけの容量が不十分である。


 

ハードウェアをチューニングする

デプロイメントにおける WebLogic Integration のパフォーマンスを最適化するには、以下のハードウェアの要因を検討します。

オペレーティング システムをチューニングする

デプロイメントにおける WebLogic Integration のパフォーマンスを最適化するには、以下のオペレーティング システムの要因を検討します。

Windows NT/2000 でコンフィグレーション可能な TCP のチューニング パラメータ

Windows NT または Windows 2000 を搭載したサーバの場合、TcpTimedWaitDelay パラメータをデフォルト値の 240 秒ではなく、60 秒に設定することをお勧めします。このパラメータは Windows レジストリにあり、regedit utility (regedit.exe) を使用して変更、編集することができます。このエントリは次の場所にあります。

HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥Tcpip¥Parameters

デフォルトでは、このエントリは存在しません。

TcpTimedWaitDelayでは、TCP が終了した接続を解放し、そのリソースを再利用できるまでに必要な経過時間を定義します。接続の終了から解放までの期間は、TIME_WAIT ステート、または 2MSL ステートと呼ばれます。この間は、新しい接続を確立するよりも非常に低いコストで、クライアントやサーバへの接続を再開できます。

RFC 793 では、ネットワーク上にあるセグメントの最大有効期間の少なくとも 2 倍以上の間(2MSL)、TCP は終了した接続を維持する必要があります。接続が解放されると、そのソケットの組み合わせと TCP 制御ブロック(TCB)を使用して、別の接続をサポートできます。デフォルトで、MSL は 120 秒に定義されているので、この値は MSL の 2 倍、つまり 4 分になります。ただし、レジストリ エントリを使用して、この間隔をカスタマイズできます。

このエントリの値を小さくすると、終了した接続がより早く解放されるため、新しい接続に対して提供されるリソースが増えます。ただし、この値を小さくしすぎると、接続が完了する前に接続リソースが解放されることがあります。この場合、接続を再確立するためには、追加リソースが必要になります。

注意: 通常、このエントリ値を超えるまで、終了した接続が解放されることはありません。ただし、TCP 制御ブロック(TCB)の範囲外で接続が行われている場合には、この期間を過ぎる前に TCP は接続を解放できます。システムで作成される TCB 番号は、MaxFreeTcbs のパラメータ値で示されます。

Windows NT/2000 システムをモニタする

パフォーマンス モニタ(perfmon.exe)を使用すると、すべてのシステム リソースおよびタスク マネージャ(CPU、メモリ、スレッドなど)をモニタできます。

Solaris のスワップ領域をコンフィグレーションする

ヒープやスレッド限度が小さすぎるあんど、スワップ場所が不十分な場合、メモリ不足エラーを発生することがあります。

Solaris ネットワークをチューニングする

Solaris システムにおけるネットワークのチューニング方法については、次の URL にある WebLogic Server プラットフォームに関するページを参照してください。

http://e-docs.bea.com/wls/platforms/sun/index.html

Solaris システムをモニタする

Solaris システムをモニタする際の推奨コマンドを次の表で示します。

モニタ対

使用コマンド

メモリ使用率

vmstat

CPU 利用率

mpstat 5. (このコマンドを使用すると、CPU 使用率の他に、プロセッサごとのコンテキストの切り替わり回数も表示される)。CPU の合計使用率を表示するには、sar コマンドを使用する。

Disk I/O

iostat

Network I/O

netstat -sP tcp. このコマンドは、各種 TCP パラメータをモニタする際に使用する。

ネットワークのパフォーマンスをチューニングする

デプロイメントにおける WebLogic Integration のパフォーマンスを最適化するには、ネットワークで高いパフォーマンスを実現するための以下の要件を検討します。

 


データベースのチューニング

デプロイメントにおける WebLogic Integration のパフォーマンスを最適化するには、基盤となるリソースを最大限に活かす必要があります。WebLogic Integration は、実行時の処理を行うためやアプリケーション データの永続性を保証するためにデータベース リソースに深く依存しています。以下の節では、WebLogic Integration デプロイメント内のデータベースのチューニング方法について説明します。

これらの節には、WebLogic Integration のパフォーマンスを最適化する作業を行う場合に検討すべき問題からなるチェックリストを用意してあります。特定のデータベース製品についての詳しい手順については、各製品の適切なマニュアルを参照してください。

一般的なデータベース チューニングの注意点

以下の節では、デプロイメントのさまざまなパラメータおよび機能の設定を調整することでデータベースのパフォーマンスを最適化する方法について説明します。

オープンしているカーソル

一般的に、複数のカーソルを使用することで、並行して実行する処理を増やす(1 つのオープン カーソルが更新を実行する間に、別のオープン カーソルが挿入を実行するなど)ことができますが、データベース サーバが対応できる最大カーソル数には限度があります。この最大プールは、データベース サーバのすべてのセッションおよび接続で共有されます。1 つの接続で使用するカーソルが多すぎた場合、他の接続でカーソルが不足するため、データベースのパフォーマンスとシステムのスケーラビリティが低下します。データベース サーバが対応できる最大オープン カーソル数および同時接続ユーザ数の平均値から、システムに適した値を見積もることができます。その他に、カーソルのオープン時間を最小限に抑えるという方法もあります。

ディスク I/O の最適化

ディスク I/O の最適化は、主要なデータベース チューニング パラメータの中でスループットとスケーラビリティに直接関連するものです。最速のディスクでも、アクセス速度はメモリ アクセスよりはるかに低速です。できる限り、ディスク アクセス数を最適化します。一般に、I/O のブロック/バッファ サイズを大きくするとディスク アクセス数が減るので、プロダクション環境で大きな負荷がかかった場合の実質的なスループットが向上する可能性があります。

推奨設定については、後述するデータベースのチューニングに関する節で該当するデータベースの説明を参照してください。

データベースのサイズ変更とテーブル スペースの編成

データベースの負荷を複数のディスク間で分散すると、ディスクの過負荷を防いだり、過負荷の発生回数を抑えたりできます。データベースのパフォーマンスを最適化する手順は次のとおりです。

チェックポイント

チェックポイントは、不要なキャッシュ データを定期的にクリーン アップするための機能です。チェックポイントの実行時には、I/O アクティビティおよび使用されるシステム リソースが増加します。チェックポイントを頻繁に実行すると、ディスク上のデータの整合性は増しますが、データベースのパフォーマンスは低下します。多くのデータベース システムにはチェックポイントの機能がありますが、すべてのデータベース システムがユーザレベルの制御を提供している訳ではありません。たとえば、Oracle の場合、システム管理者はチェックポイントの頻度を設定できますが、ユーザは SQLServer 7.X のチェックポイントは制御できません。推奨設定については、使用しているデータベースの製品マニュアルを参照してください。

データベースの互換性

推奨されているバージョンのクライアントおよびサーバのみを使用します。サポートされているデータベースのリストについては、使用している WebLogic Integration のリリースの『WebLogic Integration リリース ノート』にあるソフトウェア要件を参照してください。

データベースのモニタ

データベース使用の以下の面をモニタします。

Oracle データベースをチューニングする

この節では、Oracle 8.1.7 のパフォーマンスのチューニング方法について説明します。

V$ テーブル

Oracle 8.1.7 には V$ テーブルと呼ばれる一連の動的パフォーマンス ビューが搭載されているため、ユーザは SQL クエリを使用してシステム統計をモニタできます。このとき、ユーザは SYS または SYSTEM ユーザとしてデータベースにログインするか、これらの動的ビューにアクセスするための管理者権限が必要です。これらの動的ビューについては以下の節で説明します。動的ビューの詳細については、Oracle 管理者ガイドおよびチューニングガイドを参照してください。

初期化パラメータ

初期化パラメータ ファイル(init.ora)には、Oracle サーバの初期化パラメータとその値が記述されています。

Windows NT/2000 の場合、このファイルのパスは次のとおりです。

 d:¥oracle¥admin¥sid¥pfile¥init.ora

このパス名において、d:¥oracle はインストール先のディレクトリで、sid is データベースのインスタンス ID です(例 : d:¥Oracle¥admin¥hsundb¥pfile¥init.ora)。

このファイルは、PROCESSES = 100 のように、属性と値の組み合わせで編成されます。

ファイルを変更する前に、必ずバックアップを作成してください。変更内容を反映するには、サーバを再起動する必要があります。

サーバの再起動後、このファイルが変更されていることを確認してください。確認を行うには、SQL 文または SQL*Plus コマンドを使用します。パラメータとその値は、動的パフォーマンス ビュー V$PARAMETER に保存されます。

PROCESSES パラメータに対して行われた変更の有効性は、次のクエリを使用して検証します。属性名は、小文字で指定してください。

SELECT name, value FROM v$parameter WHERE name = ‘processes’

あるいは、SQL*Plus シェルで SHOW PARAMETERS parameter_name コマンドを使用します。たとえば、次のコマンド、

SHOW PARAMETERS “parameter”

は、次のクエリと同様の機能があります。

SELECT name, value FROM v$parameter WHERE name LIKE ‘%parameter%’;

パラメータを完全に理解したうえで、パラメータ値を変更してください。パラメータの詳細については、Oracle のマニュアルを参照してください。

共有プールのサイズ

共有プールは、Oracle サーバのシステムグローバル領域(SGA)の重要な部分です。SGA は共有メモリ構造のグループで、Oracle データベース インスタンスに関するデータと制御情報が格納されます。複数のユーザが同時に同一インスタンスに接続すると、そのインスタンスの SGA 内のデータがユーザ間で共有されます。

SGA の共有プール部分では、2 つの主要領域であるライブラリ キャッシュとディクショナリ キャッシュにデータが格納されます。ライブラリ キャッシュには、SQL 関連の情報および制御構造(例: 解析済みの SQL 文、ロック)が格納されます。ディクショナリ キャッシュには、SQL 処理に必要なメタデータが格納されます。

ほとんどのアプリケーションにおいて、共有プールのサイズは Oracle システムのパフォーマンスに重要な影響を及ぼします。共有プールが小さすぎる場合、サーバは限られた使用可能領域の管理のためにリソースを確保する必要があります。Oracle ではさまざまなキャッシュの並行管理に制限があるため、CPU リソースが消費されて、リソースの競合が発生します。使用するトリガや保存手順が多いほど、大きな共有プールが必要です。

HARED_POOL_SIZE 初期化パラメータでは、共有プールのサイズをバイト単位で指定します。プロダクション システムの場合、この値を 9MB 以上にすることをお勧めします。75MB の共有プールを必要とするシステムも珍しくありません。共有プール内の空き容量をモニタするには、次のクエリを使用します。

SELECT * FROM v$sgastat
WHERE name = 'free memory' AND pool = 'shared pool';

共有プール内に常に空き容量がある場合、プール サイズを増やしてもほとんどメリットはありません。また、共有プールが一杯だからといって、必ず問題が発生するとは限りません。一旦共有プール内に格納されたデータは補助記憶装置に移すことができます。アプリケーションとデプロイメントの要件は異なる場合があるため、特定のデプロイメントおよびアプリケーションにもとづいて、この値を設定する必要があります。

最大オープン カーソル

Oracle サーバ内のすべてのリソースが 1 つの接続によって占有されるのを防ぐため、システム管理者は OPEN_CURSORS 初期化パラメータを使用して、接続ごとに最大オープン カーソル数を制限できます。このパラメータのデフォルト値は、WebLogic Server や WebLogic Integration などのシステムでは小さすぎます。175 から 255 の範囲内で値を指定することをお勧めします。カーソル情報は、次のクエリを使用してモニタできます。

SELECT name, value FROM v$sysstat
WHERE name LIKE 'opened cursor%';

最大プロセス数

多くのオペレーティング システムでは、Oracle サーバに接続するたびに、接続に対するシャドウ プロセスが発生しますOracle サーバが対応できる最大プロセス数は、同時接続ユーザ数および Oracle サーバによって使用されるバックグラウンド プロセス数によって決まります。多くの並行処理をサポートする必要のあるシステムの場合、デフォルト値では小さすぎます。200 から 255 の範囲内の値を指定することをお勧めします。固有の情報については、Oracle 管理者ガイドを参照してください。このパラメータの現行設定は、次のクエリを使用して確認できます。

SELECT name, value FROM v$parameter WHERE name = 'processes';

データベースのブロック サイズ

ブロックは、Oracle システムにデータを保存する際の基本単位で、I/O の最小単位です。1 つのデータ ブロックは、ディスク上にある物理データベース領域の特定バイト数に対応しています。ブロックに関するこの概念は、Oracle RDBMS 固有のものです。基盤となるオペレーティング システムのブロック サイズと混同しないでください。このブロック サイズは物理的な記憶域に影響を与えるため、この値を設定できるのはデータベースの作成時に限られます。データベースの作成後は変更できません。

WebLogic Integration リポジトリの特徴とアクセス パターンから想定すると、WebLogic Integration で使用するデータベースを作成する際、ブロック サイズを 8K にすることをお勧めします。このパラメータの現行設定は、次のクエリを使用して確認できます。

SELECT name, value FROM v$parameter WHERE name = 'db_block_size';

一般的なブロック サイズの利点と欠点を以下の表に示します。

ブロック
サイズ

利点

欠点

2K-4K (小容量)

同一ブロック上で複数のトランザクションが動作する場合、ブロックの競合が減少する。データベースの列が小さい場合やランダム アクセスの回数が多い場合に適する。

I/O のオーバヘッドが比較的大きい。

列のサイズによっては、各ブロックに保存できる列の数が少なくなる。

8K (中容量)

列のサイズが中くらいの場合、1 回の I/O で複数の列をバッファ キャッシュに取り込むことができる。

ブロック サイズが小さい場合には、1 つの列しか取り込むことができない

ブロック サイズが大きく、小さい列にランダム アクセスを行う場合、Oracle バッファ キャッシュ内の領域が無駄になる。たとえば、ブロック サイズが 8KB で列のサイズが 50 バイトの場合、ランダム アクセスを行うと、バッファ キャッシュ内の 7,950 バイトが使用されない。

16K-32K (大容量)

オーバヘッドが比較的少ないため、多くのデータ保存領域を確保できる。順次アクセスを行う場合や列のサイズが大きい場合に適する。

索引のリーフ ブロックで競合が多く発生するため、大容量ブロックは OLTP タイプの環境で使用される索引ブロックには適さない。

システム管理者向けのオプションをチューニングする

この節で説明するチューニング手順は、該当するシステムに精通したシステム管理者またはユーザが実行する必要があります。

警告: この節で説明するチューニング オプションすべてを使用してもパフォーマンスが向上するとは限りません。経験的アプローチでパラメータ値を指定しなければならない場合があります

SNP プロセス

デフォルトで、Oracle サーバにはスケジュール済みのタスクを実行するためのバックグラウンド処理がいくつか作成されています。これらのタスクは、Job Queue 機能または Advanced Replication 機能を使用した場合にのみスケジュールできます(詳細は、Oracle のマニュアルを参照)。これらの Oracle 機能を使用しない場合は、バックグラウンド処理はリソースを無駄に消費します。これらのプロセスを、実際に必要になるまで無効にするには、init.ora ファイルを変更します。

init.ora ファイルで以下のセクションをコメント行にするのが、最も安全な方法です。

# The following parameters are needed for the Advanced Replication #Option
#job_queue_processes = 4
#job_queue_interval = 10

ソート領域のサイズ

ソート領域を拡張すると、クエリの実行時にメモリ内でソートを実行できるため、大容量データのソート処理のパフォーマンスが向上します。どの時点においても、各接続で使用されるソート領域は 1 つしかないため、ソート領域の拡張は重要です。init.ora パラメータのデフォルト値は、通常 6 〜 8 個のデータ ブロックのサイズになります。OLCP 処理の場合は、この値で十分ですが、意思決定支援処理、大容量データの一括処理、および大容量の索引関連処理(索引の再作成など)の場合は、この値を増やす必要があります。これらのタイプの処理を実行する際、次の init.ora パラメータをチューニングしてください(現行では、8K のデータ ブロックが設定されている)。

sort_area_size = 65536
sort_area_retained_size = 65536

テーブルの物理記憶域パラメータ

挿入、更新、削除処理によって、データベース テーブルのサイズは拡張および縮小されます。テーブルが拡張されると追加 I/O が発生するため、データベースの処理速度は低下します。このため、予想されるアクセス数および使用パターンに応じて、各テーブルの物理記憶域のパラメータを設定する必要があります。したがって、パラメータは、主に、テーブルを使用するアプリケーション次第で決まることになります。通常、Oracle システムで使用されているデフォルト値のままでも特に支障はありませんが、パラメータをチューニングすることで、パフォーマンスを飛躍的に向上させることができるインスタンスが数多くあります。この作業は、Oracle RDBMS に精通した DBA のエキスパートが実行してください。以下の節では、スキーマ オブジェクトに共通する保存域パラメータの中でも特に CREATE TABLE コマンドにとって重要なパラメータについて説明します。これらのパラメータの推奨値については、このマニュアルでは扱いません(詳細については、Oracle マニュアルまたは DBA を参照)。ここでは、問題点を事前にチェックする際に便利なパラメータとクエリをいくつか紹介します。

Redo ログをスワップする

回復処理をサポートするため、Oracle RDBMS に対して実行されるすべての処理は、Redo ログに記録されます(特定の処理に対するロギングが明示的に無効になっている場合を除く)。時間の経過とともに、ログ内の情報量が増え、最終的には処理のパフォーマンスに影響を与え始めます。回復処理はバックアップデータを使用して実行できるため、データベースのバックアップを実行した直後は、Redo ログ内の情報は必要なくなります。このため、バックアップ後に不要になった情報をクリーン アップして 新しい Redo ログを開始し、システム パフォーマンスを回復することをお勧めします。この処理を実行するには、次の SQL コマンドを使用します。

ALTER SYSTEM SWITCH LOGFILE

Redo ロギング、Redo ログとログ グループの管理、および RDBMS のバックアップの最適な実行方法の詳細については、Oracle のマニュアルを参照してください。

テーブルの再編成

SQL 処理(OLTP および Bulk)によってテーブルが拡張または縮小される際、テーブルの保存領域が断片化する場合があります。これによってパフォーマンスが低下するため、領域のギャップを回収してテーブル データをひとまとめにするユーザ介入処理が必要になります。通常、この処理はテーブルの再編成と呼ばれます。Oracle 8.1.7 には、この処理をサポートする機能が組み込まれていないため、ユーザはこの処理を手動で行う必要があります。推奨手順に従って、データベースのバックアップ直後に、この処理を実行してください。テーブル foo の再編成手順は、次のとおりです。

  1. 次の SQL 文を使用して、テーブルをコピーします。
        CREATE TABLE foo_bkup AS SELECT * FROM FOO;

    これは新しいテーブルで、回収する領域がないため、データのコピー処理によって、データの再編成が実行されます。

  2. 次の SQL 文を使用して、旧テーブルを削除します。
         DELETE TABLE foo;

  3. 新しいテーブル名を、次の SQL 文を使用して旧テーブル名に変更します。
         RENAME foo_bkup TO foo

プロセスの各手順には、DDL 文(CREATE TABLEDROP TABLE など)が含まれます。DDL statements are not transactional in Oracle. 厳密には、DDL 文は完全に独立したトランザクションの中で実行されます。このため、テーブルの再編成中は ROLLBACK コマンドは実行されません。

Microsoft SQL Server データベースをチューニングする

次の表では、Microsoft SQL Server データベースに固有のパフォーマンス チューニング パラメータについて説明します。パラメータの詳細については、Microsoft SQL Server のマニュアルを参照してください。

表6-4 Microsoft SQL Server データベースのチューニング パラメータ

パラメータ

推奨設定

Tempdb

tempdb を高速の I/O デバイスに格納する。

回復間隔

perfmon によって I/O が増加する場合は、回復間隔を長くする。

I/O ブロック サイズ

2Kb より大きな I/O ブロック サイズを使用する。


 

Sybase データベースをチューニングする

次の表では、Sybase データベースに固有のパフォーマンス チューニング パラメータについて説明します。パラメータの詳細については、Sybase のマニュアルを参照してください。

表6-5 Sybase データベースのパフォーマンス チューニング パラメータ

パラメータ

推奨設定

回復間隔

回復間隔を短くすると、チェックポイント処理が多くなるので、I/O 処理が増える。

I/O ブロック サイズ

2KB より大きな I/O ブロック サイズを使用する。

最大オンライン エンジン

対称マルチプロセッサ(SMP)環境のエンジン数を制御する。Sybase では、CPU 数から 1 を引いた数に設定することを推奨している。


 

 

ページの先頭 前 次