Forms Server for Windows and UNIX
Formsアプリケーション Web利用ガイド
リリース6i

J00496-01

戻る次へ

目次

索引

11
パフォーマンス・チューニングに関する考慮事項

11.1 概要

この章では、Forms Serverを使用してインターネットまたはその他のネットワーク環境上にアプリケーションを配置する場合に発生するチューニング上の考慮事項について説明します。この章では、アプリケーション・サーバー上のネットワークおよびリソースについて取り扱います。Forms Serverとデータベース・サーバー間の接続のチューニングについては取り扱いません。

11.2 Forms Serverのビルトイン最適化機能

Forms ServerおよびJavaクライアントには、いくつかの最適化機能が含まれており、大きく次の項目に分類できます。

11.2.1 クライアント・リソース要件の最小化

Javaクライアントは、主にアプリケーション画面のレンダリングを行います。Javaクライアントには、埋込みアプリケーションのロジックはありません。Javaクライアントをロードすると、複数のフォームを同時に表示できます。すべてのForms Serverアプリケーションに対応する汎用Javaクライアントを使用すると、各アプリケーションにカスタマイズされたJavaクライアントと比較して、クライアント上のリソースが少なくて済みます。

Javaクライアントは、多くのJavaクラスで構成されています。これらのクラスは、スプラッシュ画面の表示、ネットワーク通信およびルック・アンド・フィールの変更などの、機能サブコンポーネントにグループ化されます。機能サブコンポーネントを使用すると、Forms DeveloperおよびJava仮想マシン(JVM)は、すべての機能クラスを一度にダウンロードせず、必要に応じて機能をロードできます。

11.2.2 Forms Serverリソース要件の最小化

フォームの定義をFMXファイルからロードすると、実行プロセスのプロファイルは次のものに要約できます。

これらの中で、Data Segmentsセクションのみがアプリケーションの指定したインスタンスに対して一意です。Encoded Program UnitsおよびBoilerplate Objects/Imagesはすべてのアプリケーション・ユーザーに対して共通です。Forms Serverは共有コンポーネントを物理メモリーにマップして、同じFMXファイルにアクセスするすべてのプロセスでそのコンポーネントを共有します。

指定したFMXファイルをロードする最初のユーザーは、そのフォームに必要な全メモリー量を使用します。ただし、後続のユーザーの場合は必要なメモリー量が大幅に減らされているので、ローカル・データのエクステントにのみ依存します。共有コンポーネントをマップするこのメソッドを使用すると、指定したアプリケーションに必要な、ユーザーごとの平均メモリー量を減らすことができます。

11.2.3 ネットワーク使用量の最小化

帯域幅は重要なリソースで、インターネット・コンピューティングの一般的な広がりとともに、インフラストラクチャにますます大きな負担を強いるようになっています。このため、アプリケーションはネットワークの容量を節約して使用することが重要です。

Forms Serverは、メタデータ・メッセージを使用するJavaクライアントと通信します。メタデータ・メッセージは、実行対象のオブジェクトとその実行方法をクライアントに通知する名前と値のペアのコレクションです。パラメータのみをJavaクライアント上の汎用オブジェクトに送信することで、(同じ効果になるよう新規コードを送信した場合と比較して)通信量を約90%減らすことができます。

Forms Serverでは、次の3つの方法で効果的にデータ・ストリームを圧縮します。

11.2.4 ネットワークを介して送信されるパケットの効率の拡大

待ち時間は、アプリケーションの応答時間に影響を与える最も重要な要因です。待ち時間の影響をなるべく受けないようにする最もよい方法の1つは、JavaクライアントとForms Server間で、対話中に送信されるネットワーク・パケットの数を最小限にすることです。

Forms Developerモデル内のトリガーを多数使用すると大きな効果がありますが、各トリガーにネットワークの往復が必要なため、待ち時間の影響が大きくなります。トリガーに関連する待ち時間を避ける方法の1つは、イベント・バンドルを介してトリガーをグループ化することです。たとえば、ユーザーが項目Aから項目Bにナビゲートする場合(あるエントリ・フィールドから別のフィールドへタブする場合など)、トリガー実行前後の範囲には、それぞれForms Server上での処理が必要です。

イベント・バンドルは、2つのオブジェクト間をナビゲートしている間にトリガーされたすべてのイベントを集めて、それらを単一のパケットとしてForms Serverに配布して処理します。ナビゲートに多くのオブジェクトの問合せが関連している場合(離れているオブジェクト上でマウスのクリックを行った場合など)、イベント・バンドルは問い合されたすべてのオブジェクトからすべてのイベントを集めて、そのグループを単一のネットワーク・メッセージとしてForms Serverに配布します。

11.2.5 クライアントでのアプリケーション画面の効率的なレンダリング

指定したフォーム内のすべてのボイラープレート・オブジェクトは仮想グラフィック・システム(VGS)ツリーの一部です。VGSは、すべてのForms Developer製品に共通の図形サブコンポーネントです。VGSツリー・オブジェクトは、座標、カラー、線幅およびフォントなどの属性を使用して記述します。オブジェクトのVGSツリーをJavaクライアントに送信する場合、送信する属性のみが指定したオブジェクト・タイプのデフォルトと異なる属性になります。

イメージは圧縮されたJPEGイメージとして送信および格納されます。これにより、ネットワーク・オーバーヘッドとクライアントの必要なメモリー量の両方を減らすことができます。

リソースの最小化には、クライアントおよびサーバー・プロセスのメモリー・オーバーヘッドの最小化も含まれます。ネットワークを最適な状態で使用するには、帯域幅を最小に維持し、ネットワークの待ち時間の影響も含まれるため、クライアントおよびForms Server間の通信に使用するパケット数を最小化することが必要です。

11.3 Forms Serverアプリケーションのチューニング

アプリケーションの開発者は、Forms Serverのビルトイン・アーキテクチャの最適化機能により最大の利益を得ることができます。この章の後半では、多くのアプリケーションに影響を与える主要なパフォーマンスの問題および開発者がアプリケーションをチューニングしてパフォーマンスを改善し、Forms Server 機能を活用するための方法について説明します。

取り上げる内容は次のとおりです。

11.3.1 データ・サーバーに関連するForm Serverの位置

JavaクライアントをForms Serverへ接続する場合、イベント・バンドルなどの機能を使用してネットワーク待ち時間の影響を効率的に抑えることができます。message diff-ingを使用して、ネットワーク帯域幅を削減します。一方、Forms Serverとデータ・サーバー間に存在するクライアント・サーバーの関係で、ネットワークの往復通信の遅延や混雑はさらに許容できません。

これらの理由から、Forms Serverはデータ・サーバーと同じ高速LAN上に置くことが最良で、この結果Forms Serverをユーザーからさらに離れた場所に置くことがあります。これは、ユーザーの近くにサーバーを置くという標準規則に反しているように思えますが、従来のクライアント・サーバーのインプリメンテーションと比較して、ネットワークでのForms Serverの効率を改善した結果です。

最適構成では、図11-1に示すように、Form Serverおよびデータ・サーバーはデータ・センター内の同じ場所に配置されます。これはお薦めの設定方法ですが、クライアントは低帯域幅(モデム)と長い待ち時間(衛星)の接続を介してサーバーにアクセスします。

図11-1 Forms Serverおよびデータ・サーバーの同じ場所への配置

11.3.2 アプリケーションの起動時間の最小化

アプリケーションをロードするためにかかる時間は、第一印象として重要であり、またどのユーザーにとっても主要な基準となります。起動時間は、オーバーヘッドとみなされます。起動時間は、今後のパフォーマンスを期待させるものでもあります。業務でクライアント・テクノロジを使用する場合、クライアント・コードのロードに必要な追加のオーバーヘッドは、ユーザーにあまりよい影響を与えません。したがって、可能な限りロード時間を最小化することが重要です。

Formsアプリケーションを要求した後に、次のステップを実行してからアプリケーションを使用します。

  1. Java仮想マシン(JVM)を起動します。

  2. すべての初期Javaクライアント・クラスをロードし、クラスのセキュリティを認証します。

  3. スプラッシュ画面を表示します。

  4. フォームを次に示す方法で初期化します。

    1. 必要に応じて、追加のJavaクラスをロードします。

    2. クラスのセキュリティを認証します。

    3. ボイラープレート・オブジェクトとイメージをレンダリングします。

    4. 初期画面ですべての要素をレンダリングします。

  5. スプラッシュ画面を削除します。

  6. フォームを使用する準備ができます。

アプリケーション開発者は、JVMを起動するのにかかる時間についてほとんど何も行うことができません。ただし、Java配置モデルおよびForm Javaクライアントの構造では、開発者はロードするJavaクラスとその方法を決定できます。これにより、Javaクラスに必要なロード時間を最小化します。

Javaクライアントには、基本機能のクラス(ウィンドウを開くなど)と特定の表示オブジェクトの追加クラス(LOV項目など)のコア集合が必要です。これらのクラスはサーバーに始めから常駐している必要がありますが、次の方法を使用すると、これらのクラスをクライアントのJVMにロードするのに必要な時間を短縮できます。

11.3.2.1 JARファイルの使用

JavaはJavaアーカイブ(JAR)メカニズムを提供して、クライアントにネットワークを介して効率的な配布を行うために、クラスをまとめてグループ化し、圧縮(Zip形式)することができるファイルを作成します。このファイルをクライアントで使用すると、今後の使用のためにキャッシュされます。

Form Serverは、次に示す構成済みのJARファイルを提供して、通常の配置シナリオをサポートします。

ファイル名  使用方法  説明 

f60all.jar 

任意 

すべてのランタイム状況においてJavaクラス・ファイルの全体的な集合を含む。 

f60common.jar 

必須 

アプレットごとに必要。 

f60generic_laf.jar 

任意 

アプリケーションをGeneric lookAndFeelランタイム設定で配置する場合、またはlookAndFeel設定を指定していない場合にロードする。

<APPLET ...>
<PARAM NAME="lookAndFeel" VALUE="Generic">
...
</APPLET>
 

f60oracle_laf.jar 

任意 

アプリケーションをOracle lookAndFeelランタイム設定で配置する場合にのみロードする。

<APPLET ...>
<PARAM NAME="lookAndFeel" VALUE="Oracle">
...
</APPLET>
 

f60splash.jar 

必須 

アプレットごとに必要。 

f60tree.jar 

任意 

Formsアプリケーションは、階層ツリー・コントロールを使用する場合にのみロードする。 

1つ以上のJARファイルをアプレットに指定するには、参照しているHTMLファイルの<APPLET>タグでARCHIVEパラメータを指定します。例:

<APPLET CODEBASE="http://www.server.com/webcode/"
ARCHIVE="f60all.jar, icons.jar"
CODE="oracle.forms..">

11.3.2.2 キャッシュの使用

Form Serverのサポート済みJVMは両方(Oracle JInitiatorおよびOracle JDK)ともJARファイルのキャッシュをサポートします。JVMがクラスを参照する場合、最初にローカルのクライアント・キャッシュをチェックして、クラスがキャッシュ済みJARファイル内に存在するか確認します。クラスがキャッシュ内に存在する場合、JVMはサーバーをチェックして、JARファイルの現行バージョンがあるか確認します。見つからない場合は、クラスはネットワークを介してではなくローカル・キャッシュからロードされます。

キャッシュは、効率性を最大化するために適切なサイズにします。キャッシュ・サイズが小さすぎると、有効なJARファイルが上書きされてしまう場合があります。その結果、アプリケーションを再度起動すると、別のJARファイルのダウンロードが必要になります。デフォルトのキャッシュ・サイズは20MBです。このサイズは、アプリケーションを正常に実行した後のキャッシュ容量のサイズと比較する必要があります。

JARファイルはロード元のホストに関連してキャッシュされます。これには、異なるサーバーからの同一のJARファイルがキャッシュを埋めることができるロード・バランス・アーキテクチャという含意があります。JARファイルを中央に置き、ロード・バランス構成の各サーバーでそれらを参照することで、開発者は各JARファイルの1つのコピーのみがクライアントのキャッシュでメンテナンスされていることを確認できます。この方法を使用すると、JARファイル内の特定のクラスに署名して、ロード元のサーバー以外のサーバーに接続を戻せるようにする必要があります。Oracleが提供するJARファイルでは、事前にクラスに署名してあります。

11.3.2.3 需要に応じた遅延ロード

JARメソッドの欠点は、実行を継続する前にJARファイル内のすべてのクラスをロードし、JVMによって妥当性チェックする必要があるという点です。JARファイルの便利な点として、他のJARファイルを参照して、指定したアーカイブ内に格納するクラスの数を制限できるという機能があります。JVMは、アプリケーションが要求する順序で必要なJARファイルにナビゲートできます。

Oracleが提供するf60splash.jarファイルには、クライアントを初期化し、初期スプラッシュ画面を表示するのに十分なロジックがあります。また、このファイルには、他のJARファイルに含まれるファイルの遅延参照もあるので、これらのファイルは需要に応じて続いてロードされます。需要に応じた遅延ロードを使用するには、f60splash.jarファイルをHTMLページが参照する最初のJARファイルに設定する必要があります。

11.3.3 必須ネットワーク帯域幅の削減

開発者は、メッセージ間で異なる情報のみを送信するmessage diff-ingを使用して、データ・ストリーム圧縮を最大限利用できるようアプリケーションを設計できます。次のステップを実行すると、メッセージ間の相違部分を削減できます。

さらに、トリガーまたは他のロジックを使用して項目プロパティを変更する場合、別の表示タイプの項目プロパティを変更する前に似たような項目のプロパティをまとめてグループ化する必要があります。例:
set_item_property(text_item1_id, FONT_WEIGHT, FONT_BOLD);
set_item_property(text_item2_id, FONT_WEIGHT, FONT_BOLD);
set_item_property(text_item3_id, FONT_WEIGHT, FONT_BOLD);
set_item_property(button_item1_id, LABEL, 'Exit');
...

Set_Application_Property (MENU_BUFFERING, 'false');

メニューのバッファは、LABEL、ICON、VISIBLEおよびCHECKEDのメニュー・プロパティにのみ適用します。ENABLE/DISABLEイベントは常に送信されますが、メニュー全体を再送信する場合は不要です。

11.3.4 パフォーマンスを改善するためのその他の方法

次に示す方法を使用すると、アプリケーションを実行するのに必要なリソースをさらに削減できます。


戻る 次へ
Oracle
Copyright © 2000 Oracle Corporation.

All Rights Reserved.

目次

索引