Oracle® Fusion Middleware Oracle WebLogic Server パフォーマンス チューニング ガイド 11g リリース 1 (10.3.1) B55570-01 |
|
戻る |
次へ |
以下の節では、永続ストアをチューニングする方法について説明します。永続ストアは、永続性が必要な WebLogic Server のサブシステムおよびサービスに高性能な組み込みストレージ ソリューションを提供します。
以下の節では、永続ストアの使い方について説明します。
管理サーバを含め、すべてのサーバ インスタンスには、コンフィグレーションが不要なデフォルトの永続ストアがあります。デフォルト ストアはファイルベースのストアで、サーバ インスタンスの data\store\default ディレクトリに格納された一連のファイルにデータを保持します。デフォルト ストア用のディレクトリは、存在しない場合には自動的に作成されます。このデフォルト ストアは、特定のストアを明示的に選択する必要がなく、システムのデフォルトのストレージ メカニズムを使用することで最適に動作するサブシステムから使用することができます。たとえば、永続ストアがコンフィグレーションされていない JMS サーバは、管理対象サーバ用のデフォルトのストアを使用して永続メッセージングをサポートします。以下を参照してください。
『Oracle Fusion Middleware Oracle WebLogic Server サーバ環境のコンフィグレーション』の「WebLogic 永続ストアの使い方」
Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「デフォルト ストアの設定の変更」
デフォルトのファイル ストアを使用するだけでなく、特定のニーズに合わせてファイル ストアや JDBC ストアをコンフィグレーションすることもできます。デフォルト ファイル ストアと同様、カスタム ファイル ストアもディレクトリに格納された一連のファイルにデータを保持します。一方、特定のストレージ デバイスにデータを保持するカスタム ファイル ストアを作成することもできます。ファイル ストアのディレクトリをコンフィグレーションする場合は、そのファイル ストアが配置されているサーバ インスタンスにアクセスできるディレクトリを設定する必要があります。
JDBC ストアは、リレーショナル データベースをストレージとして使用している場合にコンフィグレーションできます。JDBC ストアを使用することで、指定の JDBC データ ストアを介してアクセスできる標準の JDBC 対応データベースに永続メッセージを格納できます。JDBC ストアのデータベース テーブルに格納されたデータには、WLStore
という論理名が付けられます。データベースの高可用性とパフォーマンスをコンフィグレーションするかどうかは、データベース管理者の判断です。以下を参照してください。
『Oracle Fusion Middleware Oracle WebLogic Server サーバ環境のコンフィグレーション』の「カスタム永続ストアを使用すべき状況」
『Oracle Fusion Middleware Oracle WebLogic Server サーバ環境のコンフィグレーション』の「ファイル ストアと JDBC ストアの比較」
『Oracle Fusion Middleware Oracle WebLogic Server サーバ環境のコンフィグレーション』の「カスタム (ユーザ定義) ファイル ストアの作成」
『Oracle Fusion Middleware Oracle WebLogic Server サーバ環境のコンフィグレーション』の「JDBC ストアの作成」
各 JMS サーバではファイル ベースのページング ストアが暗黙的に作成されます。このストアは、WebLogic Server JVM が低メモリ状態で動作しているときに、非永続性メッセージおよび JDBC ストアの永続メッセージのページングに使用されます。ページング ストアを使用すると、アプリケーションによってはディスクのアクティビティが増大することがあります。
注意 : ファイル ストアの永続メッセージはページング ストアを使用してページングされません。各自のファイル ストアに対して直接的にページングされます。 |
通常であれば JMS ページング ストアをチューニングする必要はありませんが、必要な場合には、ディレクトリの場所やページングを開始するしきい値設定を変更できます。「順序単位を使用したアプリケーションのチューニング」を参照してください。
同じサーバ インスタンスを共有するサブシステムでは、サブシステムごとにストアを使用するのではなく複数のサブシステムで 1 つのストアを共有する。ストアを共有すると、以下の理由から効率性が高まります。
同時発生する複数の要求を 1 つのストアで 1 つの I/O にまとめることで、全体のディスク使用率が減少する。
参加するリソースが 1 つだけのトランザクションは軽量の 1 フェーズ トランザクションだが、複数のストアが参加するトランザクションはより重い 2 フェーズ トランザクションになる。
たとえば、同じサーバ インスタンスで動作するすべての SAF エージェントや JMS サーバは、同じストアを共有するようにコンフィグレーションします。
古いストア (群) を拡張しなくなった場合にのみ、新しいストアを追加する。
空のストアの初期化に使用する JDBC ストアの DDL の場所が、コンフィグレーション可能になりました。これにより、データベース テーブルを作成するためのカスタム DDL を簡単に使用できるようになっています。この DDL はデータベースの特定のパフォーマンス チューニングに使用されることもあります。詳細については、Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「JDBC ストアの作成」および『Oracle Fusion Middleware Oracle WebLogic Server サーバ環境のコンフィグレーション』の「WebLogic 永続ストアの使い方」を参照してください。
この節では、ファイル ストアのチューニングについて説明します。
基本的な (非 RAID の) ディスク ハードウェアの場合、ファイル ストアごとに 1 つの専用のディスクを使用することを検討する。ディスク上の別のストアと競合しなくてよい場合、ストアの処理速度は 4 ~ 5 倍上昇します。コンフィグレーションした各ストアや各 JMS サーバ用の JMS ページング ストアの他に、デフォルト ファイル ストアがあることに留意してください。
[Direct-Write
] 同期書き込みポリシーを使用する。
WebLogic Server 9.0 以降のリリースでは [Direct-Write
] がデフォルトの書き込みポリシー。ほとんどのアプリケーションで、[Cache-Flush
] 書き込みポリシーよりも [Direct-Write
] 書き込みポリシーの方がパフォーマンスが向上します。
注意 : [Direct-Write ] 書き込みポリシー (デフォルト) は Microsoft Windows 上では安全でない場合があります。Microsoft Windows のシステム管理者は、Windows のディスクで直接書き込みがメモリにキャッシュされずに、Direct-Write ポリシーを使用する他のベンダと同様、必ずディスクにフラッシュされるようにコンフィグレーションする必要があります。Oracle Fusion Middleware Oracle WebLogic Server の Administration Console オンライン ヘルプの「getSynchronousWritePolicy」を参照してください。 |
WebLogic Server 9.0 より前のリリースのファイル ストアでは、[Cache-Flush
] がデフォルトの書き込みポリシー。
[無効] 書き込みポリシー オプションを使用すると、特にクライアントの負荷が少ない場合に大幅にパフォーマンスを向上できる。ただしこの設定は安全ではありません。書き込みが非同期になり、オペレーティング システムのイベントや停電などによってデータが失われるおそれがあるためです。
ベンダを直接的に比較する場合、永続ストアの書き込みポリシーをすべて同等のポリシーにする。WebLogic 以外の一部のベンダには、デフォルトで [無効] に相当する動作をするものがあります。
ディスク パフォーマンスがボトルネックの状況が続く場合、組み込みの書き戻しキャッシュを備えたディスク コントローラ ハードウェアまたは RAID コントローラ ハードウェアの購入を検討する。こうした書き戻しキャッシュで一時的に永続データを揮発性のメモリへ保存すると、大幅にパフォーマンスが向上します。書き戻しキャッシュでのトランザクションを確実に安全なものにするには、書き戻しキャッシュを停電、ホスト マシン障害、およびオペレーティング システム障害から保護する必要があります。このような保護機能は通常、バッテリー バックアップのある書き戻しキャッシュで提供されます。
特に、ハード ディスク ベースの書き戻しキャッシュを使用していて、物理ストレージのレイテンシによってパフォーマンスが制限されている場合、同期書き込みポリシーの [Direct-Write
](デフォルト) または [Cache-Flush
] がコンフィグレーションされているファイル ストアでは、ファイル ストア ブロック サイズのチューニングが必要になる場合があります。
次のケースについて検討します。
単一の WebLogic JMS プロデューサは永続メッセージを 1 つずつ送信する。
ネットワークのオーバーヘッドは、ごくわずかであることが分かっている。
ファイル ストアのディスク ドライブの回転速度は 10,000 rpm。
ディスク ドライブはバッテリー バックアップのある書き戻しキャッシュを備えている。
また、メッセージ レートは 1 秒間に 166 メッセージと測定されています。
このケースでは、バッテリー バックアップのある書き戻しキャッシュによって高いメッセージ レートが可能なように思われますが、実際のレートは低く、ディスク ドライブのレイテンシ (10,000 rpm/60 秒、つまり 166 rps) と同じ数値になります。ストアのブロック サイズをファイル システムのブロック サイズと一致するようチューニングすることで、大幅な改善が可能です。
以下のようなケースでは、ブロック サイズをチューニングしても全く改善が見られなかったり、改善したとしても不十分であったりする可能性があります。
キャッシュによってレイテンシが小さくなっている (つまり、I/O サブシステムは重大なボトルネックではない)。
書き戻しキャッシュが使用されておらず、ディスク ドライブのレイテンシが大きいため、パフォーマンスが制限されている。
使用しているブロック サイズが大きい場合は、パフォーマンスとファイル スペースの間にトレード オフが存在する可能性があります。複数のアプリケーション レコードは、同時に書き込まれた場合にのみ、単一のブロックにまとめられます。そのためブロック サイズを大きくすると、サーバ アクティビティが同時に実行されることがほとんどなく、小さいレコードしか生成されないアプリケーションの場合、ストア ファイルのサイズが大幅に増大することになります。この場合、小さいレコードがブロックごとに 1 つずつ格納され、各ブロックの残りのスペースは使用されません。例として、100 バイト長の小さなメッセージを送信する単一のプロデューサを含む、Web Service Reliable Messaging (WS-RM) アプリケーションが挙げられます。ここでは、ストアを使用するのはアプリケーションだけです。
パフォーマンスが向上する場合は、ファイル ストア ブロック サイズをチューニングして、ファイル ストアをホストするファイル システムのブロック サイズ (通常は 4096) と一致させることをお勧めします。または、ブロック サイズを別の値 (ページング ユニットやキャッシュ ユニットなど) にチューニングしてもパフォーマンスが向上することもあります。ブロック サイズをチューニングしてもパフォーマンスが向上しない場合は、デフォルトのブロック サイズを使用することをお勧めします。デフォルトのサイズを使用すると、ファイル システム リソースの使用が最小限に抑えられるためです。
ストアのブロック サイズを設定するには、以下のプロパティのうちのいずれかを、ストアを実行する JVM のコマンドラインで使用します。
-Dweblogic.store.BlockSize=<block-size>
既存のファイルを持たないファイル ストアすべてのブロック サイズを設定します。
-Dweblogic.store.<store-name>.BlockSize=<block-size>
既存のファイルを持たないファイル ストアのうち、特定のストアのブロック サイズを設定します。
両方を設定した場合は、<store-name> 設定が優先されます。ブロック サイズの設定に使用できる値は、512 ~ 8192 までの整数です。値は自動的に、512 の倍数に最も近い数に切り上げられます。
注意 : コマンドライン プロパティを使用したブロック サイズの設定は、既存のファイルを持たないファイル ストアでのみ可能です。ストアに既存のファイルが存在する場合は、ストアの最初の作成時に設定されたブロック サイズがそのまま使用されます。 |
ファイル ストアの現在のブロック サイズおよび同期書き込みポリシーは、ストアをホストするサーバのサーバ ログで確認することができます。「永続ストアが開きました」といった内容が表示されている BEA-280050 メッセージを検索してください。
ファイル システムの現在のブロック サイズを確認するには、使用しているオペレーティング システムのドキュメントを参照してください。次に例を示します。
Linux ext2 および ext3 ファイル システムの場合 : /sbin/dumpe2fs /dev/<
device-name
>
を実行し、「Block size」を検索する。
Windows NTFS の場合 : fsutil fsinfo ntfsinfo <
device letter
>:
を実行し、「Bytes Per Cluster」を検索する。
ストアの既存のファイルのデータを保持する必要がない場合は、ホストの WebLogic Server インスタンスを停止してファイルを削除すれば、ストアを再起動した際にブロック サイズを変更できます。データを保持する必要がある場合は、新しいブロック サイズを指定したファイル ストアを作成して、既存のファイルが存在するストアのブロック サイズを変換します。その際は、コマンドライン ストア管理ユーティリティの compact コマンドを使用します。
java -Dweblogic.store.BlockSize=<
new-block-size
> weblogic.store.Admin
help と入力して、使用可能なコマンドを確認します。
Storeadmin->compact -dir <
file-store-directory
>
『Oracle Fusion Middleware Oracle WebLogic Server サーバ環境のコンフィグレーション』の「Java コマンドラインを使用したストア管理」を参照してください。