この章では、ポータル・システムの基本構成を設定した後で、その構成を基にしてOracle Portalのパフォーマンスを調整する方法について説明します。
この章では、Oracle Portalのパフォーマンスを調整する方法として、次のオプションについて説明します。
関連項目:
|
Oracle HTTP Serverは、WebリクエストをHTTPプロセスへ配布して処理します。Oracle HTTP Serverは、ユーザーのブラウザから送信されるすべてのタイプのリクエスト(静的ファイル、Javaサーブレット、PL/SQLプロシージャに対するリクエストなど)を処理できます。
MaxClients
は、Oracle HTTP Serverの構成ディレクティブの1つで、Oracle HTTP Serverが常に処理可能なWebリクエストの最大数を制御します。リクエスト数がMaxClients
を超えると、Oracle HTTP Serverは、現在の負荷を処理してHTTPプロセスが解放されるまで、新しいリクエストの処理を拒否します。たとえば、あるクライアント・ブラウザが許容セッション数を超えていると、他のクライアント・ブラウザがロックアウトされることがあります。
MaxClients
ディレクティブは、同時Webリクエストの適切なフローをサーバーに許可するレギュレータとして考えることができます。この値が小さすぎると、Webポータルのパフォーマンスが低下する場合があります。より多くの通信量を迅速なレスポンスで処理するサーバーおよびデータベース・リソースを配置しても、適切なプロセス数がMaxClients
に設定されていないと、Webリクエストを処理できない場合があります。
各HTTPプロセス・サーバーはCPU時間、メモリー、I/Oなどのリソースを消費するため、MaxClients
の値が大きすぎると、必要以上にリソースを消費することになります。その結果、パフォーマンスが低下する場合があります。Oracle HTTP Serverは、PL/SQLプロシージャに対するリクエストなど、あらゆる種類のリクエストを処理できます。Oracle HTTP Serverがリクエストを受信すると、ポータル・データベースと通信するためにPortalサービスにリクエストを渡します。ポータル・データベースへのリクエストを実行するサーバー・プロセスごとに、データベース接続をキャッシュする必要があります。MaxClients
に設定する値によって、Portalサービスが開くことができるデータベース接続の上限が決まります。
たとえば、MaxClients
を最大数の1024に設定します。Oracle HTTP Serverは、常に1024(データベース接続を必要とする数を含む)のWebリクエストを同時に処理できます。サーバーがこの負荷に対応できる場合でも、接続先のデータベースが対応できないことがあります。PL/SQLプロシージャのリクエスト数が他のタイプのリクエスト数より急激に多くなった場合は、データベースが対応できる負荷を超える可能性があります。
注意 Windowsの場合は、Oracle HTTP ServerのパラメータThreadsPerChild を調整してください。 |
パフォーマンスを最適にするには、構成内のサーバーが処理できるWebリクエストの数およびデータベースが処理できる通信量を決めることです。1つのデータベースに接続する複数の中間層サーバーがポータル構成に含まれている場合、処理可能なWebリクエストの数は、中間層よりもデータベースの容量によって制限される可能性があります。
関連項目:
|
MinSpareServers
は、UNIX特有のOracle HTTP Serverディレクティブの1つで、アイドル・セッションの最小数を設定します。アイドル・セッションとは、Webリクエストを現在処理していないセッションのことです。アイドル・セッションの数が、MinSpareServers
で指定されている数よりも少ない場合は、最大で毎秒1個のプロセスが新しく作成されます。
このパラメータは、アクセス頻度の高いサイトに対してのみ調整してください。デフォルトの設定は5です。このパラメータを大きな数に設定することはお薦めできません。原則として、ポータルが通常処理するWebリクエストの平均数を少し上回る値にMinSpareServers
を設定します。できるだけ、新しいポートを開かずに、開いているポートによってユーザー・リクエストが処理されるように設定します。ただし、この状態を実現するには、データベース・リソースで必要な数のポートを利用できなければなりません。
UNIXとは異なり、Windowsはスレッドベースのオペレーティング・システムであり、1つのプロセスが開始された後、その子プロセスが必要に応じてスレッド化されます。Windowsコンピュータの場合、このディレクティブはMaxThreadsPerChild
と呼ばれます。これは、サーバーが同時に処理できるリクエスト数を表します。サーバー、およびサーバーが使用することのできるシステム・リソースの応答性に従って、この値を設定してください。WindowsのMaxThreadsPerChild
はUNIXのMaxClients
に相当します。
関連項目: 『Oracle Fusion Middleware Oracle HTTP Server管理者ガイド』 |
ポータル・ページに対するリクエストはURLの形式で開始され、ユーザーのブラウザからOracle HTTP Serverに送信されます。ポータル・ページに対するリクエストの場合、Parallel Page Engine(PPE)に転送されます。次にPPEは、ポートレットを実行してコンテンツをポータル・ページに返すよう、ページ上のポートレットを所有する各プロバイダに要求します。
PPEにおける同時実行性を向上させるには、次の手順を実行します。
デフォルトのスレッド数を増やす
PPEはフェッチャのプールを使用して、リクエストをプロバイダに転送し、返されるデータを待機します。リクエストの処理を終了したフェッチャは解放され、新しいリクエストを処理できるようになります。
PPEスレッドの数を調整するパラメータは、poolSize
という名前で、DOMAIN_HOME
\config\fmwconfig\servers\WLS_PORTAL\applications\portal\configuration\appConfig.xml
ファイルに構成されています。
デフォルト値は、25
です。ほとんどのWebポータルの場合、プール・サイズを変更する必要はありません。ただし、プール・サイズが小さすぎると、ピーク間隔でページの描画に時間がかかるようになります。プール・サイズが大きすぎると、リソースが不足することがあります。同時に多数のURLリクエストが発生して、PPEの処理量を超える可能性があるためです。
PPEのパラメータは次のとおりです。
<poolSize>50</poolSize>
構成の変更を有効にするには、Oracle Fusion Middleware中間層を再起動します。
Oracle HTTP Serverリスナーを設定することにした場合でも、Oracle HTTP Serverリスナーによって同時に処理できるリクエストのおおよその数を設定して、パフォーマンスを最適化することができます。
Oracle Portalの実行に必要なデータベース・セッションの合計数は、ポータル・リポジトリへの同時アクセスを必要とする同時リクエストの合計数の要因になります。特定のインスタンスによるサービスが可能な任意のタイプの同時リクエストの合計数は、Oracle HTTP Serverの構成パラメータMaxClients
の要因になります。
ポータル・リポジトリへの各接続では、1つのネットワーク接続と2つのセッションを使用します(2つのセッションは同じ物理接続を使用します)。最初のセッションはportal用、2番目のセッションはportal_public用です。
したがって、MaxClients
は150に設定されていても、ポータル・リポジトリへの同時アクセスを必要とする同時リクエストの最大数が50である場合は、100(50*2)セッションを実行できるようにデータベースを構成する必要があります。
理論的には、150すべてのリクエストがポータル・リポジトリへの同時アクセスを必要とすることも考えられ、このような場合に必要なデータベース・セッション数は300(150*2)になります。実際には、このような状況はほとんど発生しません。
ポータル・リポジトリへの同時アクセスを必要とする同時リクエストの数が多く、処理可能なセッション数を越えた場合、クライアントがロックアウトされることがあります。ただし、セッション数を非常に大きな値に設定すると、リソースが必要以上に消費されます。
注意:
|
MaxClients値の構成
一般に、ログインの頻度はOracle Portalへアクセスする頻度よりも低いため、独立したOracle HTTP ServerリスナーでOracleAS Single Sign-Onを構成するほうが適切です。目標は、MaxClients
の設定をポータル・システムのニーズに影響しない程度に合理的な値に調整することです。
関連項目: 『Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイド』 |
MaxClients
設定を構成するには、次の手順を実行します。
OracleAS Single Sign-Onのリスナーの場合、MaxClients
パラメータに設定する近似値を決定し、次の場所にある構成ファイルhttpd.conf
で、その近似値に応じて値を適切に編集します。
ORACLE_INSTANCE
\config\OHS\ohs1
MaxClients
の設定を調整して、Oracle HTTP ServerリスナーでOracle HTTP Serverのサービスによって処理されるリクエストの数を制御します。これによって、確立されるセッションの最大数が制御されます。
Oracle Portalリスナーの場合は、OracleAS Single Sign-OnのニーズとOracle Portalのニーズに従って、矛盾が発生しないようにMaxClients
パラメータを個別に調整できます。このパラメータは、確立されるセッションの数に直接対応しており、Oracle HTTP Serverリスナーがポータル・リスナーで処理できる最大負荷に相当します。
次の例は、httpd.conf
ファイルのMaxClients
セクションを表しています。
# MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves <IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 AcceptMutex fcntl
注意:
|
ファイル・システム・キャッシュを調整すると、キャッシュのパフォーマンスが向上します。ファイル・システム・キャッシュを調整するには、次の2つの方法があります。
より高速なファイル・システムに常駐するように、ファイル・システム・キャッシュを構成します。
セッション・キャッシュ・ディレクトリをよりパフォーマンスの高いファイル・システムへ移動します。
注意: 今回のリリース以降、Oracle Portalではセッション・キャッシュのメモリー内キャッシュが実装されています。この機能により、頻繁に使用されるセッション・キャッシュ・オブジェクトの読込みにおいて競合が発生する可能性が低くなるため、よりパフォーマンスの高いファイル・システムへセッション・キャッシュのコンテンツを移動する必要がなくなります。 |
これらの方法の詳細は『Oracle Fusion Middleware mod_plsqlユーザーズ・ガイド』のPL/SQLパフォーマンスの最適化に関する項を参照してください。
Portalサービスは、Oracle Net Servicesを利用して、Oracle Metadata RepositoryのOracle Portalスキーマに接続します。Oracle Net Servicesを調整すると、データベース・アクセスのパフォーマンスが向上します。
詳細は、Oracle Technology Network (OTN)(http://www.oracle.com/technology/
)のホワイト・ペーパー「Tuning Oracle Net Services to optimize mod_plsql Database access times」を参照してください。このドキュメントに記載されている調整方法は、Oracle Portalでも使用できます。