ヘッダーをスキップ

Oracle Application Server パフォーマンス・ガイド
10gリリース3(10.1.3.1.0)

B31836-02
目次
目次
索引
索引

戻る 次へ

9 Oracle Application Server Wirelessメッセージ・サーバーのパフォーマンス・チューニング

この章では、パフォーマンスを向上するためにDBAが実行する必要があるOracle Application Server Wirelessメッセージ・サーバー用構成手順について説明します。

パフォーマンスの向上には、RAC環境とRACでない環境の両方において、メッセージ・サーバーの一方向処理と双方向処理のパフォーマンスを向上させるSQL最適化も含まれます。この章で説明する内容は次のとおりです。

9.1 高いパフォーマンスを実現するためのOracle Application Server Wirelessメッセージ・サーバーの構成

RAC環境で様々なベンチマーク・テストを行った結果、高度に協調的に動作するようにアプリケーションを注意深く設計し、マルチノードRAC環境で実行する高パフォーマンス型AQを活用できるようにアプリケーションを適切にチューニングする必要があるということが判明しました。

マルチノードRAC環境のスループットは、複数のキューを次のように作成すると、大幅に向上する場合があります。すなわち複数のキューはそれぞれ、(a)各キューと特定のRACノード間にアフィニティが設定されるようにし、(b)RACノード上のエンキューやデキューのリクエストが、アフィニティが設定されているキューからのみメッセージを取得するように作成します。これによって、共有キューにアクセスする際に複数のRACノードからのリクエストで発生するキャッシュ・バッファ待ち状態が防止されます。

パフォーマンスに関する推奨事項の一部は、RACでない環境にも適用されます。

次の各項では、メッセージ・サーバーのパフォーマンスを向上するために必要な構成手順について説明します。

メッセージ・サーバーのパフォーマンスに影響を与える要因の詳細は、「メッセージ・サーバーのパフォーマンスに影響を与える要因」を参照してください。

9.1.1 概要

この項では、Oracle Application Server 10.1.2.0.2 Wirelessメッセージ・サーバーに個別パッチを適用する手順について説明します。


注意

単一RACノード(または単一データベース・マシン)の環境では、チューニングの推奨事項によってはパフォーマンスに影響しない場合があります。 


9.1.2 データベースとOSのチューニング

トランザクション数の多い環境で最適なパフォーマンスを実現するようにデータベースをチューニングする必要があります。データベースをチューニングする際の推奨手順は次のとおりです。

  1. アプリケーション・サーバーのインスタンスを停止します。

  2. チェックポイントの待機状態を解消します。

    REDOログのサイズを500MB以上に設定し、各グループにメンバーを3つ以上作成します(またはグループを3つ作成します)。

  3. チェックポイントの実行頻度を減らします。

    log_checkpoint_timeoutを0に設定すると、自動チェックポイントを無効にできます。

    これには、次のコマンドを使用します。

    alter system set log_checkpoint_timeout=0 scope=both;

  4. システム・グローバル領域(SGA)のサイズを1GB以上にします。

  5. 共有プール・サイズを、推奨最小サイズの300MB以上にします。

  6. RHEL 4ではLMS(ロック・マネージャ・サーバー)プロセスの数を変更します。これは、グローバル・キャッシュ・サービスの主要コンポーネントです。LMSプロセスでは、グローバル・キャッシュの一貫性を維持し、キャッシュ・フュージョンのリクエストに応じて複数のインスタンス間におけるブロック転送を処理します。

    パフォーマンスを向上するには、次のコマンドを使用して、LMSを1に設定します。

    alter system set gcs_server_processes = 1 scope=spfile sid='*'

  7. RHEL 4を使用している場合は、Metalink Note 363147.1に従ってネットワーク・インタフェースをチューニングすることを検討します。

  8. アプリケーション・サーバーのインスタンスを起動します。

    表9-1は、データベース・システム・パラメータと推奨値の一覧です。

    表9-1    データベース・システム・パラメータと推奨値 
    データベース・システム・パラメータ  推奨値  備考 

    REDOログ 

    500MB以上

    グループごとのメンバーの数は3 

    この設定によりチェックポイントの待機状態を解消します。 

    Log_checkpoint_timeout 

    この設定により自動チェックポイントを無効にします。 

    システム・グローバル領域 

    1GB以上 

     

    共有プール・サイズ 

    300MB以上 

     

    LMSプロセス 

     

    データベースのチューニングの詳細や、メッセージ・サーバーのパフォーマンスに影響を与えるOS要因の詳細は、「データベースのチューニング」を参照してください。

9.1.3 マルチRAC環境のパフォーマンスの最適化

マルチノードRAC環境のパフォーマンスを最適化する場合のみ、次の手順を実行します。


注意

この手順は、RACでない環境の設定には使用しないでください。 


  1. sysdbaとしてデータベースに接続し、次のスクリプトを実行します。

    SQL> @@trans_tbs_create.sql


    注意

    trans_tbs_create.sqlにより、ASSM(自動セグメント領域管理)機能を持つTRANS表領域を新規に作成します。ASSMは、メッセージ・サーバーのパフォーマンスを最適化するためにRAC環境で必要な機能です。 


  2. プロンプトが表示されたら、このデータベースのデータファイルに使用するベース・ディレクトリのパスを入力します。

    たとえば、「/product/10.1.0/oradata/orcl」と入力します。

    この作成スクリプトはまず、データファイルへのパスを指定せずに表領域の作成を試みます。ASM機能のある一般的なRAC環境では、このスクリプトは問題なく実行されます。ただし、RACでない一般的な環境では、データファイルのパスが指定されていないことを示すエラーが発生し、コマンドは失敗します。スクリプトはこのエラーを認識すると、ユーザーが指定したデータファイル用ベース・ディレクトリとファイル名(trans.dbf)を使用して、表領域の作成を試みます。

    SQL> @@trans_tbs_migrate.sql


    注意

    trans_tbs_migrate.sqlにより、すべてのトランスポート(つまりメッセージ・サーバー)表と索引を、新しい表領域のTRANSに移行するか移動します。  


  3. すべてのWireless中間層(OC4J_WirelessコンポーネントとWirelessコンポーネントを含む)を再起動します。


    注意

    Windowsでは、Enterprise Managerも起動してください。 


9.1.4 メッセージ・サーバー構成

この項では、次のメッセージ・サーバー構成について説明します。

9.1.4.1 デキュー・ナビゲーション・モードの更新

デキュー・ナビゲーション・モードをfirstからnextのメッセージに更新すると、メッセージ優先順位のセマンティックは失われますが、スループットはさらに向上します。これには、次の手順を実行します。

ワイヤレス・ユーザーとしてデータベースにログインし、次のコマンドを実行します。

SQL> @@trans_config_update.sql dequeue_navigation_mode next


注意

メッセージ・サーバーで使用される属性を構成できるよう、属性の追加や更新を行うためのスクリプトであるtrans_config_update.sqlが用意されています。 


使用方法: SQL> @@trans_config_update.sql <attr_name> <attr_val>

デフォルトのデキュー・ナビゲーション・モードに戻すには、次のコマンドを実行します。

SQL> @@trans_config_update.sql dequeue_navigation_mode first

9.1.4.2 中間層インスタンスにおけるノード固有DB接続文字列の追加

高いメッセージング・パフォーマンスをマルチノードRAC環境において実現するには、中間層インスタンス上のメッセージ・サーバー・プロセスとOC4J_Wirelessプロセスが、必ず1つのRACノードにのみ接続する必要があります。このように構成すると、RACノードの数が中間層インスタンスの数より多くても、メッセージ・サーバーが別のRACノードを使用することはありません。図9-1図9-2は、有効な構成を示しています。

図9-1    3つの中間層と3つのRACノード: それぞれが特定のRACに接続している構成


画像の説明

図9-2    3つの中間層と2つのRACノード


画像の説明

中間層インスタンスを前述のように構成するには、これらのプロセスに対して、カスタマイズした接続文字列をJVMパラメータとして指定します。手順は次のとおりです。

  1. 各中間層インスタンスにEnterprise Managerとしてログインし、ホーム・ページにナビゲートします。

  2. 「関連リンク」セクションで、「プロセス管理」リンクをクリックします。

  3. "messaging_server"プロセス・タイプのXMLセクションを探します。

    たとえば、<process-type id="messaging_server" module-id="messaging">のXMLを探します。

  4. そのセクションで、次のXMLを追加または変更します。

    <module-data>
    <category id="start-parameters">
    <data id="java-parameters"
    value="-Xms64M -Xmx256M -Dwireless.db.instance.string= (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<%hostname%>)(PORT=<%port%>))(CONNECT_DATA=(SID=<%sid%>)))"/>
    </category>
    </module-data>

    <%hostname%>、<%port%>および<%sid%>のトークンを、各RACノードで適切な値に置換します。

  5. "OC4J_Wireless"プロセス・タイプのXMLセクションを探します。

    たとえば、<process-type id="OC4J_Wireless" module-id="OC4J">のXMLを探します。

  6. そのセクションで、"java-options"データ・ノードを探します(検索対象XMLの例: <data id="java-options" value="…"/>)。

    次のJVMパラメータをvalue属性に追加します。

    -Dwireless.db.instance.string= (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<%hostname%>)(PORT=<%port%>))(CONNECT_DATA=(SID=<%sid%>)))

    <%hostname%>、<%port%>および<%sid%>のトークンを、各RACノードで適切な値に置換します。


    注意

    有効であれば、どのDB接続文字列でも指定できます("username/password@"の接頭辞は不要)。たとえば、フェイルオーバー・インスタンスを接続文字列に追加することもできます。ただし、SERVICE_NAMEではなくSIDを使用することが重要です。ここでの目的は、中間層のプロセスを特定のRACインスタンスに強制的に接続することであり、リスナーにおいて複数のRACインスタンス間におけるロード・バランシングを試みることではないからです。 


  7. すべての中間層マシンのOC4J_WirelessコンポーネントとWirelessコンポーネントを再起動し、変更を有効にします。

9.2 メッセージ・サーバーのパフォーマンスに影響を与える要因

パフォーマンスを向上させるためにメッセージ・サーバーをチューニングするには、次の手順を実行します。

9.2.1 trans_midとtrand_didの索引におけるキャッシュの順序付け

メッセージ・サーバーでは、ステータスID、メッセージID、ストアIDなどの様々なIDを生成するために、trans_midとtrans_didの順序が広範囲に使用されます。

推奨事項: アクセス速度を高速にするために、インスタンスのSGAには、50,000個の順序番号が事前に割り当てられたキャッシュが用意されています。

順序番号の数を100,000個に増やすことで、ディスクI/Oの削減とCR待機時間の短縮もできます。ただし、キャッシュのサイズを大きくすることで、他のアプリケーションのメモリー・フットプリントが減少しないように注意する必要があります。

警告: 順序キャッシュのサイズを大きくするとメッセージIDが不規則になったり、データベースの再起動時にIDに欠番が生じる場合があることを、DBAは認識しておく必要があります。

9.2.2 trans_ids表の索引の強制使用

trans_ids表におけるobject_id列へのアクセス頻度は非常に高いです。

推奨事項: ソフトウェアにより、trans_ids表のobject_id列に作成された索引が強制的に使用されるようになっています。

テストではメッセージング・パフォーマンスが大幅に向上しました。

9.2.3 ナビゲーション・モードの変更

デキュー操作のデフォルト実装では、firstメッセージがナビゲーション・モードとして使用されます(dequeue_option.navigation = DBMS_AQ.FIRST_MESSAGE)。

推奨事項: ナビゲーション・モードをnextメッセージに変更してください(dequeue_option.navigation = DBMS_AQ.NEXT_MESSAGE)。詳細は、「デキュー・ナビゲーション・モードの更新」を参照してください。

テストではメッセージング・パフォーマンスが若干向上しました。しかし、このパフォーマンス向上方法には制限事項があります。nextメッセージをナビゲーション・モードに設定すると、キューからメッセージを選択するために使用されるカーソルがキャッシュされ、デキュー操作によってキューのスナップショットが取得されます。したがって、キューにエンキューされた新しいメッセージは参照できなくなります。エンキューされた新しいメッセージの優先順位が高く、スナップショット内のメッセージよりも先に処理する必要がある場合、この方法は問題になります。したがって、この変更は、受信するメッセージがすべて同じ優先順位であることが判明している場合にのみ適用してください。

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

大量のトランザクションを処理するシステムでは、多数のREDOが生成されます。そのため、ログ・スイッチにおいてチェックポイントが頻繁に発生する場合があります。チェックポイントは、データベースのalert.logファイルに記録されます。

推奨事項: チェックポイントとログ・スイッチの実行頻度を減らしてください。

チェックポイントの待機状態を解消するには、REDOログのサイズを500MB以上に設定し、各グループにメンバーを3つ以上作成します(またはグループを3つ作成します)。さらに、log_checkpoint_timeoutパラメータを0に設定すると、自動チェックポイントを無効にできます。

高いスループットを実現するには、リソース共有に関連するデータベース・パラメータを細かくチューニングします。

推奨事項: SGAおよび共有プールのサイズは、十分なサイズに設定してください。

SGAは1GB以上に設定します。

共有プールは300MB以上に設定します。

テストではメッセージング・パフォーマンスが大幅に向上しました。

9.2.5 ノード・アフィニティを持つ複数のキュー

2つのRACノードでベンチマーク・テストを行った結果、高度に協調的に動作するようにアプリケーションを注意深く設計し、マルチノードRAC環境で実行する高パフォーマンス型AQを最大限に活用できるようにアプリケーションを適切にチューニングする必要があるということが判明しました。

推奨事項: ソフトウェアにより、複数のキューが作成されています。すなわち複数のキューはそれぞれ、(a)各キューと特定のRACノード間にアフィニティが設定されるようにし、(b)RACノード上のエンキューやデキューのリクエストが、アフィニティが設定されているキューからのみメッセージを取得するように作成されています。これによって、共有キューにアクセスする際に複数のRACノードからのリクエストで発生するキャッシュ・バッファ待ち状態が防止されます。

テストではメッセージング・パフォーマンスが大幅に向上しました。

9.2.6 ASSM表領域

複数のノードからメッセージ・サーバーの表に対して頻繁にデータが挿入される場合は、データ・ブロック、表セグメント・ヘッダーおよび他のグローバル・リソース要求に対する同時アクセスにより、パフォーマンス問題が発生していました。

ASSMを使用すると、表の空き領域の管理に関連付けられたデータ構造が、個々のインスタンスに使用できる非結合セットに分割されます。ASSMにより、挿入用に十分な空き領域のあるデータ・ブロックが、各インスタンスで個別に管理されるため、個々のインスタンスで動作するプロセス間のパフォーマンス問題が改善されます。

推奨事項: メッセージ・サーバー(トランスポート)の表と索引では、ASSM表領域を使用してください。「マルチRAC環境のパフォーマンスの最適化」を参照してください。

9.2.7 ロード・バランシング

複数のキューが必要になったことで、中間層インスタンスのバランシングも必要になります。

ある中間層インスタンス上のクライアントやメッセージ・サーバーが、使用可能なRACノードに不均等に分散して接続している場合は、キューが順番に処理されない場合があります。さらに、あるキューのエンキュー元やデキュー元が多すぎると、そのRACノードのスループット・パフォーマンスが低下する場合があります。

推奨事項: このような不均衡を防止するには、中間層インスタンスのmessaging_serverプロセスとOC4J_Wirelessプロセスを、1つの特定RACノードに関連付けてください。詳細は、「中間層インスタンスにおけるノード固有DB接続文字列の追加」を参照してください。

9.2.8 エンキューとデキューにおけるスレッドの数

エンキューとデキューにおけるスレッドの数は、全体的なスループットに大きく影響します。そこで、実際のドライバとクライアント・アプリケーションを使用してから、最高の結果になるようにスレッド数を再度チューニングする必要があることに注意してください。RACノード上のキューにエンキュー元やデキュー元が多すぎると、そのキュー(および同じRACノード上の他のキュー)のスループットが低下する場合があります。エンキュー元やデキュー元(これらは、ドライバ送信処理スレッドとドライバ受信処理スレッド、またはクライアント送信処理スレッドとクライアント受信処理スレッドで制御される)の最適数は、RACノード、中間層マシン、ディスク・ストレージなどの物理的なハードウェア特性にも左右されます。

推奨事項: 各エンキュー処理スレッド(送信の場合はクライアント送信処理スレッド、受信の場合はドライバ受信処理スレッド)で生成される負荷が均等であると仮定すると、設定するスレッド数は、負荷が数分間続いた後のキュー内のメッセージ数によって異なります。キューがほとんど空の状態で、エンキュー・スレッド(送信の場合はクライアント送信処理スレッド)の数の値を大きくすると、エンキュー率が上昇する場合があります。キューのサイズが一定範囲を超えて増加し始めた場合(クライアント側でメッセージのエンキューを行う処理によって増加し続けた場合)は、デキュー・スレッド(送信の場合はドライバ送信処理スレッド)の数の値を大きくします。各RACノード上のキューのサイズが一定の値(100,000メッセージのテストで2,000メッセージ未満)になったとき、最高の結果になります。その差は微妙であるため、最高の結果を実現するには、繰り返してテストを実行する必要があります。ドライバとクライアントの両方においてスレッドの数が少なすぎても多すぎても、実現可能な最大スループットの値は小さくなります。

9.2.9 DBパラメータのaq_tm_processes

Oracle Streams AQのタイム・マネージャ・プロセスは、init.oraパラメータであるAQ_TM_PROCESSESで制御できます。このパラメータをゼロ以外の値に設定することで、キュー・メッセージの時間を監視したり、遅延や有効期限のプロパティが指定されているメッセージを処理できます。テスト環境においてこのパラメータを10に設定してテストを行いました。そうすると、AQのキュー・モニター・プロセスで問題が発生し、あるプロセスでは短いループの中でそのプロセスのCPU使用率が100%になり、他のプロセスに使用できるCPU時間が減少しました。この問題は、対応するプロセスを強制終了しても、そのプロセスのかわりに別のプロセスが作成されるため、解決しませんでした。オラクル社のAQチームでは、この問題に対処するためにこのパラメータ値を9に設定することをお薦めします。

AQチームによると、Oracle Streams AQリリース10.1ではこれがコーディネータ・スレーブ型アーキテクチャに変更されているため、実際にOracle Streams AQやStreamsがシステムで使用されている場合、コーディネータのプロセスが自動的に作成されます。このプロセスはQMNCと呼ばれ、システムの負荷に応じてスレーブを動的に作成します。スレーブの名前はqXXXで、Oracle Streams AQやStreamsのために様々なバックグラウンド・タスクを実行します。プロセス数は自動的に決定されて絶えず調整されるため、AQ_TM_PROCESSESを設定する必要はありません。しかし、テスト環境でこのパラメータを削除すると、メッセージ・サーバーによって必要以上のキューが作成されることが判明しました。値を9に設定した場合は、メッセージ・サーバーは適切に動作し、必要な数だけキューが作成されました。

そこで、次の現象が発生するかどうかを調べてください。

前述の現象のいずれかが発生した場合は、次の作業を実行します。

9.2.10 RHEL4でのRACインターコネクト

次の情報は、http://metalink.oracle.comのMetalink Note 363147.1の抜粋です。

9.2.10.1 目的

RHEL3からRHEL4にアップグレードすると、RACのインターコネクト環境のシステム構成によっては、パフォーマンスが低下することがあります。このノートでは、問題を特定して解決するための手順について説明します。

9.2.10.2 適用範囲とアプリケーション

この項の内容は、次のユーザーを対象としています。

グローバル・キャッシュ・ブロック損失とIPフラグメンテーション障害によって、RACインターコネクトのパフォーマンスが低下します。RACクラスタのLinux OSをRHEL3(2.4.21)からRHEL4(2.6.9)にアップグレードすると、グローバル・キャッシュ・ブロック損失率が1.5/秒まで上昇し、GC CRブロック損失が上位5位の待機イベントになることが判明しました。また、スループット・パフォーマンスは最大30%低下しました。GCブロック損失数は、パケット再組立てエラーの数に関連しています。これらの現象は、リリース番号によって異なりません。RHEL4を使用するシステムで発生する可能性があります。

さらなる分析により、RHEL3とRHEL4との間で、Intel社製e1000ドライバのイーサネット・フロー制御設定が変更されたことが、この現象の原因であることが判明しました。

この問題は、次の社内システム構成とお客様のシステム構成で確認されています。

同様の問題が発生しているかどうかを確認する方法は次のとおりです。

9.2.10.3 問題の解決方法

RHEL4(2.6.9)では、e1000ネットワーク・アダプタのRXフロー制御がデフォルトで無効になりますが、RHEL3ではこれが有効になります。このアダプタのRXフロー制御を有効にすると、ブロック損失とパケット再組立て障害が発生しなくなります。

フロー制御を設定するには、次の構文を使用します(ここでは、例としてeth1を使用します)。

完全な構文は、FlowControl value: 0-3(0=なし、1=RXのみ、2=TXのみ、3=RxとTx)です。各アダプタの値はカンマで区切って指定します。

9.2.10.4 問題の解説

e1000ネットワーク・アダプタのあるIntel Xeonサーバーの場合、RHEL3(2.4)では、ネットワーク・アダプタのRX(スイッチから送信されたフレームに対するe1000レスポンス)フロー制御がデフォルトで有効になります。しかし、RHEL4(2.6.9)にアップグレードすると、RXフロー制御はデフォルトで無効になるため、ブロック損失が発生します。この設定に変更される理由は現在も調査中です。フロー制御のデフォルト設定は、カーネルのe1000ドライバのバージョンとe1000カード本体のバージョンの両方によって異なることに注意してください。様々なチップセットと様々なe1000ドライバをベースとするIntel GigE NICの可用性も、この問題を複雑にしています。前述の問題の組合せを調べ、推奨される解決策を使用する必要があります。この動作は、RHEL4やすべてのIntel GigE NICで発生するわけではありません。Linux 2.4とLinux 2.6.9では、どちらのTXフロー制御もデフォルトでは無効にされます。TXフロー制御を有効にすることはお薦めしません。

9.3 RACインスタンス障害の処理

この項では、RACインスタンスのいずれかに障害が発生した場合(またはオフラインになった場合)に、メッセージ・サーバーが実行する処理について説明します。

ドライバ・キューとサービス・キューが作成されると、メッセージ・サーバーは1次ノードと2次ノードをキューに割り当てます。デフォルトでは、1次ノードがアクティブ・ノード(現在キューにアフィニティが設定されているノード)になります。1次ノードに障害が発生すると、AQは2次ノードをアクティブにします。つまり、アフィニティを2次ノードに割り当てます。

メッセージ・サーバーはこのような変更を追跡でき、かつ変更を追跡する必要があります。ノードに接続する際に、エンキュー用とデキュー用の適切なキューを選択する必要があるためです。

現在の実装では、軽量のDBMSジョブが一定の間隔(2分ごと)でキューのアフィニティを監視し、キューとRACノードとのマッピング(メッセージ・サーバーで使用)を自動更新します。

したがって、ノードに障害が発生した場合、メッセージ・サーバーではアフィニティが変更されたキューからメッセージの処理を続行します。障害のあったノードがオンラインに復旧すると、マッピングはDBMSジョブによって自動的に再び割り当てられます。DBAが何もしなくても、単一インスタンスの障害は自動的に処理されます。

RACインスタンスを停止する予定があり、その停止時間中にDBMSジョブを待たずに、キューとRACノードとのマッピングを更新する場合は、RACノードを停止した後、次の手順を使用して更新を強制適用することができます。

  1. Sqlplusでwireless/<%wireless_pwd%>@<%db-connect-string%>として接続します。

  2. 次のSQLコマンドを実行し、キューとRACノードとのマッピング(メッセージ・サーバーで維持されているマッピング)を更新します。

    SQL> execute transport.monitor_queues;

9.4 RACの再構成

この項では、RACノードと中間層が永続的に追加されたり削除された場合に必要となるメッセージ・サーバー再構成手順について説明します。

9.4.1 RACノードの追加または削除

RACノードを永続的に追加したり削除する場合は、メッセージ・サーバーを再構成して、キューを適切に作成できるようにする必要があります。そのためには、次の手順を実行します。

  1. すべての中間層インスタンスでOPMNを停止します。

  2. $ORACLE_HOME/wireless/repository/sqlディレクトリに移動します。

  3. sqlplus <wireless/<%wireless_pwd%>@<%db_conn_string%>を実行します。

  4. 既存のキューを削除します。

    execute transport.drop_all_queues;

  5. すべての中間層インスタンスでOPMNを起動します。

    キューは起動時に自動的に作成されます。

9.4.2 中間層の追加または削除

最適なスループットを実現するにはロード・バランシングが不可欠であるため、メッセージ・サーバー用に構成されているRACノードの数と同数以上の中間層インスタンスを用意することが重要です。

RACノードの数より中間層インスタンスの数が少ない場合、メッセージ・サーバーは、中間層インスタンスが接続されているRACノードのみを使用します。

逆に、RACノードの数より中間層インスタンスの数が多い場合は、第1.4.1項の説明に従って、中間層インスタンスのDB接続文字列を構成できます。ただし、RACノード上のキューにエンキュー元やデキュー元が多すぎると、そのキュー(および同じRACノード上の他のキュー)のスループットが低下する場合があることに注意してください。エンキュー元やデキュー元(これらは、ドライバ送信処理スレッドとドライバ受信処理スレッド、またはクライアント送信処理スレッドとクライアント受信処理スレッドで制御される)の最適数は、RACノード、中間層マシン、ディスク・ストレージなどの物理的なハードウェア特性に左右されます。

9.5 テスト・シナリオと結果

この項では、テスト・シナリオの設定とテスト結果について説明します。

9.5.1 設定の詳細

この項では、マシン、ソフトウェア、ハードウェアおよびRACの設定について説明します。

9.5.1.1 マシンの設定の詳細

テストを実行する際、6台の同一マシンを使用しました。

3台のマシンに中間層をインストールし、3台のノードで構成されるRACにデータベースを配置しました。IMは別のマシンにインストールしました。

9.5.1.2 マシンのハードウェアの詳細

6台のマシン(3台は中間層、残り3台はRACノード)はいずれも、4GBのメモリー、3.0GHzのIntel Xeon CPUが2基(OSからは4基に見える)搭載されています。

9.5.1.3 ソフトウェアの詳細

OS: Red Hat Enterprise Linux AS R4(Nahant Update 3)

Oracle Application Server 10.1.2.0.2

9.5.1.4 RACの設定の詳細

DBおよびCRSは10.2.0.2です。ASMは2.0です。

データベース・サーバーはRAC内に構成しました。DBサーバーが同じデータベースにアクセスできるようにするには、3台のサーバー間で共有できるネットワーク・ストレージ・ユニットが必要です。これは、ファイバ・チャネルでサーバーに接続されるSANディスク(表9-2を参照)を使用することで解決しました。SANを使用すると、データベース・サーバーからのディスク・アクセスが高速にでき容易になります。また、Webベースのクライアント・ツールを使用して構成も簡単にできます。

表9-2    SANディスク 

ベンダー 

EMC 

モデルとバージョン 

EMC Clarion CX 300 

ディスク 

33GBのディスクが3台、RAID 0構成のファイバ・チャネル、disk0、disk1、disk2。33GBのディスクが2台、ファイバ・チャネル、RAID 1構成、disk3。 

補足情報 

disk0、disk1およびdisk2は、DATADG ASMディスク・グループに追加され、データベースのデータファイルとSPFileの格納に使用されます。

これらは、db01、db02およびdb03から、/dev/sdc、/dev/sddおよび/dev/sdedisk3として3つのパーティションに分割されて参照できます。最初の2台は、投票ディスク(/dev/sdb1)とクラスタ・リポジトリ(/dev/sdb2)のRAWデバイスとして使用されます。3台目のディスク(/dev/sdb3)は、LOGDG Asmディスク・グループに追加され、データベースのREDOログの格納に使用されます。  

9.5.2 一方向テスト・シナリオ

一方向テストは、パフォーマンス向上用コードの実装前と実装後に実行しました。テスト・シナリオの詳細と結果は次のとおりです。

9.5.2.1 テスト・シナリオ

テストの実行に使用したメッセージの合計数: 各中間層で100,000メッセージ

実行したクライアント・プログラムの数: 各中間層マシンで1つ

実行したメッセージ・サーバーの台数: 各中間層マシンで1台

9.5.2.2 クライアント構成

各中間層からメッセージを送信するクライアント・スレッドの数: 10個

各中間層から各クライアント・スレッドが送信するメッセージの数: 10,000個

送信処理間の間隔: 0

9.5.2.3 ドライバ構成

各中間層メッセージ・サーバー・インスタンスにあるドライバ送信スレッドの数: 8個


注意

使用したドライバは、実際のSMSCやSMSCシミュレータには接続しないため、ダミーです。実際の動作環境シナリオで実際にテストすると、テスト結果が記載と若干異なる場合があります。 


9.5.2.4 テスト結果

パフォーマンス向上用パッチを適用した後、一方向スループットの結果は図9-3のようになりました。

図9-3    一方向スループット・テストの結果


画像の説明

9.5.2.5 テスト・データ

表9-3は、ダミー・ドライバを使用して生成された一方向テスト・データを示しています。

表9-3    一方向テストの詳細 
テストの詳細  送信スループット(メッセージ数/秒) 

テスト1: 1つのDBノードの構成によるパフォーマンス向上措置実行後(メッセージ・サーバーとデータベースのチューニング後)の一方向(送信)テストの結果 

185 

テスト2: 2つのDBノードの構成によるパフォーマンス向上措置実行後(メッセージ・サーバーとデータベースのチューニング後)の一方向(送信)テストの結果 

290 

テスト3: 3つのDBノードの構成によるパフォーマンス向上措置実行後(メッセージ・サーバーとデータベースのチューニング後)の一方向(送信)テストの結果 

420 


注意

記載されたスループットは、安定状態時におけるスループットです(システムとテストにはウォーミングアップ時間がありました)。 


9.5.3 双方向テスト・シナリオ

双方向テストは、パフォーマンス向上措置の適用前と適用後に実行しました。テスト・シナリオの詳細と結果は次のとおりです。

9.5.3.1 テスト・シナリオ

テストの実行に使用したメッセージの合計数: 各中間層で20,000メッセージ

実行したクライアント・プログラムの数: 各中間層マシンで1つ

実行したメッセージ・サーバーの台数: 各中間層マシンで1台

クライアント構成:

各中間層から実行するクライアントの受信スレッド・セットの数: 4個

ドライバ構成:

各中間層メッセージ・サーバー・インスタンスにあるドライバ送信スレッドの数: 3個

各中間層メッセージ・サーバー・インスタンスにあるドライバ受信スレッドの数: 2個


注意

使用したドライバはダミーで、実際のSMSCやSMSCシミュレータには接続しません。実際の動作環境シナリオで実際にテストすると、テスト結果が記載と若干異なる場合があります。 


9.5.3.2 テスト結果

双方向テスト・シナリオの結果は、次のとおりです。

図9-4    双方向スループット・テストの結果


画像の説明

9.5.3.3 テスト・データ

表9-4は、ダミー・ドライバを使用して生成された双方向テスト・データを示しています。

表9-4    双方向テスト・データ 
テストの詳細  送信スループット(メッセージ数/秒)  受信スループット(メッセージ数/秒) 

テスト1: 1つのDBノードの構成によるパフォーマンス向上措置実行後(メッセージ・サーバーとデータベースのチューニング後)の双方向(送受信)テストの結果 

86 

140 

テスト2: 2つのDBノードの構成によるパフォーマンス向上措置実行後(メッセージ・サーバーとデータベースのチューニング後)の双方向(送受信)テストの結果 

130 

140 

テスト3: 3つのDBノードの構成によるパフォーマンス向上措置実行後(メッセージ・サーバーとデータベースのチューニング後)の双方向(送受信)テストの結果 

160 

160 


注意

記載されたスループットは、安定状態時におけるスループットです(システムとテストにはウォーミングアップ時間がありました)。 



戻る 次へ
Oracle
Copyright © 2001, 2008, Oracle.

All Rights Reserved.
目次
目次
索引
索引