Forms Servicesの組込み最適化機能
Oracle Forms ServicesおよびJavaクライアントには、いくつかの最適化機能が含まれています。
最適化機能は、大きく次のカテゴリに分類されます。
Forms Servicesの監視
Fusion Middleware Controlを使用してOracle Formsを監視し、次のメトリック情報を確認します。
-
Forms Servicesインスタンス
-
イベント
-
ユーザー・セッション
-
Forms Trace
Forms ServicesのWebランタイム・プーリング
Formsランタイム・プーリング(Formsランタイム・プレスタート)を使用すると、構成可能な数のアプリケーション・ランタイム・エンジンを使用する前に起動できます。ランタイム・プーリングにより、サーバーのピーク時に迅速に接続できるようになり、サーバー側のアプリケーションの起動時間が短縮されます。ランタイム・プーリングは、サーバー構成の窓口が小さいにもかかわらず、そこで多くのユーザーがFormsアプリケーションに接続するような状況で役立ちます。事前に起動されたランタイム・エンジンはすべて、同じ環境で実行され、同じアプリケーションを提供します。
事前起動パラメータの構成
Enterprise Manager Fusion Middleware Controlで次の表に示されているパラメータを使用して、Forms Servicesのランタイム・プーリングを構成します。
表-50 Formsランタイム・プーリング・パラメータ
パラメータ名 | データ型 | 説明 | デフォルト値 |
---|---|---|---|
|
boolean |
trueに設定した場合にのみ、ランタイムの事前起動またはプーリングが有効になります。 |
false |
|
integer |
最初に作成される必要のあるランタイム・プロセスの数。 |
1 |
|
integer |
このプール(構成セクション)の事前起動プロセスがすべて停止するまでの時間(分単位)。クライアント接続が行われると、ランタイム・プロセスは事前起動プールから削除されるため、停止されません。 |
0 (0に設定した場合、タイマーは起動しません) |
|
integer |
プールに存在する必要のあるランタイム・プロセスの最小数。 |
0 |
|
integer |
事前に起動されるランタイム・プロセスの数がminRuntimes未満の場合に作成されるランタイム・プロセスの数。 |
0 |
ノート:
prestartMin
は、特定のアプリケーションに対してランタイム・プーリングがアクティブな間は常に存在する必要のある、事前に起動されるランタイムの最小数を定義します。最小値は、prestartInit
パラメータに定義した値と同等またはそれ未満に設定してください。prestartMin
パラメータは、いつでも変更可能で、アプリケーション・サーバーの再起動を必要としません。クライアントが事前起動済のランタイム・プロセスへの接続をリクエストし、このランタイム・プロセスがタイムアウトしていない場合、この新しいエントリが取得されます。プロセスがタイムアウトすると、アプリケーションはデフォルトの動作になり、最小のしきい値は維持されません。
各構成セクションで、これらのパラメータの値を指定できます。prestartRuntimes = true
エントリがあっても、関連する事前起動パラメータがない場合は、デフォルト値が使用されます。
ロード・バランシングが実現されたシステムに複数のOracle WebLogic管理対象サーバーがある場合は、前述のパラメータに指定された様々な値は、アプリケーションの全体ではなく、JVMごとに対応します。
ランタイム・プーリングの起動
管理者は、Enterprise Manager Fusion Middleware Controlを使用して、特定のアプリケーションでランタイム・プーリングが有効になるように構成できます。アプリケーション・サーバー(Oracle WebLogic管理対象サーバー)を起動すると、アプリケーションごとに構成した数のFormsランタイム・プロセスが事前に起動されます。
Formsサーブレットの初期化フェーズで構成ファイル(formsweb.cfg
)が読み取られ、prestartRuntimes
パラメータが有効になっているアプリケーションがサーバーによって事前に起動されます。
ランタイム・プーリングのスケジューリング
ランタイム・プーリングのスケジューリング(またはランタイム事前開始のスケジューリング)は、Formsランタイム・エンジンの事前開始をスケジュールできる機能です。Oracle Formsでは、構成可能な数のFormsランタイム・エンジンを使用する前にその起動について管理できるのみでなく、より柔軟性の高い方法で適切な時間にFormsランタイム・プロセスの事前開始をスケジュールできます。Enterprise Manager Fusion Middleware Controlを使用することにより、Formsランタイム事前開始のスケジュール、既存のスケジュールの確認、既存の任意のスケジュールの削除およびスケジュールのエクスポートとインポートを行うことができます。
prestartRuntimesパラメータの設定
事前開始済のプロセスを使用する構成セクションに対して、パラメータprestartRuntimes
をTRUE
に設定する必要があります。このパラメータが正しく設定されていないと、「事前開始ジョブが作成されました。」というメッセージが表示されても、スケジュールの作成は暗黙的に失敗します。
prestartRuntimes
は、Forms Web構成で設定する必要があります。[default]セクションでこのパラメータを設定することはお薦めしません。そうすると、これが望ましくない構成セクションに対してFALSE
の値でオーバーライドしないかぎり、他のすべての構成に対してプロセスが起動されることになります。
事前開始スケジュールの作成
事前開始スケジュールを作成するには、次のステップを実行します。
-
「Forms」メニューから、「スケジュール事前開始」を選択します。
「スケジュール事前開始」ページが表示されます。
-
「スケジュール済のジョブ」リージョンで、「作成」をクリックします。事前開始をスケジュールするための「ジョブの作成」ページが表示されます。
-
「ジョブ名」に、スケジュールの名前を入力します。
ジョブ名の最大長が100文字を超えないようにする必要があります。アンパサンド(&)などの特殊文字を含めることはできません。
-
「構成セクション」リストから、構成タイプを選択します。
このリストには、パラメータの論理セットが含まれています。
-
「事前開始初期」に、初期に起動する必要があるランタイム・プロセスの数を示す数値を入力します。この値が1以上であることを確認します。
-
「事前開始タイムアウト」に、未使用の事前開始プロセスを停止するまでの時間(分単位)を示す数値を入力します。この値にゼロを設定すると、タイマーは開始されないため、プロセスはタイムアウトしません。
-
「スケジュール・タイプ」オプションから、適切なスケジュール・タイプを選択します。
設定可能な3つのスケジュール・タイプを次に示します。
-
「1回(遅延ベース)」: 初期遅延ベースで1回の事前開始をスケジュールする必要がある場合に、このオプションを選択します。初期遅延とは、事前開始が始まるまでの時間数または分数を指定する、時間ベースのパラメータです。このオプションを選択する場合、スケジュール・タイプの下に表示される「初期遅延」フィールドに、初期遅延時間(時間単位または分単位)を入力する必要があります。
-
「1回(日付ベース)」: 日付ベースで1回の事前開始をスケジュールする必要がある場合に、このオプションを選択します。このオプションを選択する場合、スケジュール・タイプの下に表示される「開始日」フィールドに、日付を入力する必要があります。
-
「繰返し」: 繰返しの事前開始をスケジュールする必要がある場合に、このオプションを選択します。「頻度」リストから、次のオプションのいずれかを選択できます。
-
「繰返し日付および間隔」: このオプションを選択する場合、開始日と、事前開始を繰り返す間隔を指定する必要があります。
-
「繰返し初期遅延および間隔」: このオプションを選択する場合、初期遅延と、事前開始を繰り返す間隔を指定する必要があります。
-
-
-
「発行」をクリックします。
「ジョブの表示」をクリックすると、作成されたすべての事前開始スケジュールを表示できます。
事前開始スケジュールの削除
事前開始スケジュールを削除するには、次のステップを実行します。
-
「Forms」メニューから、「スケジュール事前開始」を選択します。「スケジュール事前開始」ページが表示されます。
-
「スケジュール済のジョブ」リージョンから、削除するスケジュール済のジョブの行を選択します。
ヒント:
削除する複数の行を同時に選択できます。 -
「削除」をクリックします。選択した事前開始スケジュールが削除されます。
事前開始スケジュールのエクスポートとインポート
このユーティリティを使用すると、既存のすべてのスケジュールを特定の管理対象サーバーからエクスポートして、それらを別の管理対象サーバーにインポートできます。この機能では、スケジュールを選択してエクスポートすることができないため、既存のすべてのスケジュールをエクスポートする必要があります。事前開始スケジュールをエクスポートおよびインポートするには、次のステップを実行します。
クライアント・リソース要件の最小化
Javaクライアントは、主にアプリケーション画面のレンダリングを行います。これには、埋込みアプリケーションのロジックはありません。Javaクライアントをロードすると、複数のフォームを同時に表示できます。すべてのOracle Formsアプリケーションに汎用Javaクライアントを使用すると、アプリケーションごとにカスタマイズされたJavaクライアントよりも、クライアント上のリソースが少なくて済みます。
Javaクライアントは、多くのJavaクラスで構成されています。これらのクラスは、スプラッシュ画面の表示、ネットワーク通信およびルック・アンド・フィールの変更などの、機能サブコンポーネントにグループ化されます。機能サブコンポーネントを使用すると、Oracle Forms DeveloperおよびJava仮想マシン(JVM)は、すべての機能クラスを一度にダウンロードしなくても、必要に応じて機能をロードできます。
Forms Servicesリソース要件の最小化
フォーム定義がFMXファイルからロードされる時、実行プロセスのプロファイルは次のものに要約できます。
-
暗号化されたプログラム・ユニット
-
ボイラープレート・オブジェクト/イメージ
-
データ・セグメント
これらの中で、データ・セグメント・セクションのみがアプリケーションの指定したインスタンスに対して一意です。暗号化されたプログラム・ユニットとボイラープレート・オブジェクト/イメージは、どのアプリケーション・ユーザーにも共通しています。Oracle Forms Servicesでは、共有コンポーネントを物理メモリーにマップし、同じFMXファイルにアクセスするすべてのプロセス間でこれを共有します。
指定したFMXファイルをロードする最初のユーザーは、そのフォームに必要な全メモリー量を使用します。ただし、後続のユーザーの場合は必要なメモリー量が大幅に減らされているので、ローカル・データのエクステントにのみ依存します。共有コンポーネントをマップするこのメソッドを使用すると、指定したアプリケーションに必要な、ユーザーごとの平均メモリー量を減らすことができます。
ネットワーク使用量の最小化
帯域幅は重要なリソースであり、インターネット・コンピューティングの一般的な広がりとともに、インフラストラクチャにますます大きな負担を強いるようになっています。このため、アプリケーションはネットワークの容量を節約して使用することが重要です。
Oracle Forms Servicesは、メタデータ・メッセージを使用してJavaクライアントと通信します。メタデータ・メッセージは、実行対象のオブジェクトとその実行方法をクライアントに通知する名前と値のペアのコレクションです。パラメータのみをJavaクライアント上の汎用オブジェクトに送信することで、(同じ効果になるよう新規コードを送信した場合と比較して)通信量を約90%減らすことができます。
Oracle Forms Servicesでは、データ・ストリームを次の3つの方法で効率的に圧縮します。
-
同じようなメッセージの集合(名前と値のペアのコレクション)を送信すると、2番目以降のメッセージには、前のメッセージとの相違点のみが含まれます。この結果、ネットワーク・トラフィックを大幅に減らすことができます。このプロセスは、message diff-ingと呼ばれます。
-
同じ文字列がクライアント画面で繰り返されると(たとえば、同じ企業名が記載されている複数行のデータが表示される場合)、Oracle Forms Servicesはその文字列を一度のみ送信し、後続のメッセージではその文字列を参照します。参照によって文字列を渡すことで、帯域幅の効率は向上します。
-
データ型はその値に必要な最小のバイト数で送信されます。
ネットワークを介して送信されるパケットの効率の拡大
Oracle Forms Developerモデル内のトリガーを多数使用すると大きな効果がありますが、各トリガーにネットワークの往復が必要なため、待機時間の影響が大きくなります。待機時間は、アプリケーションのレスポンス時間に影響を与える最も重要な要因です。待機時間は、ネットワーク速度と同じではありません。ネットワーク速度には、時間単位あたりの転送可能ビットの測定が関連しますが、待機時間は、1ビットがあるエンドポイントから別のエンドポイントまで移動するのにかかる時間を表します。待機時間の影響をなるべく受けないようにする最もよい方法の1つは、JavaクライアントとForms Services間で、対話中に送信されるネットワーク・パケットの数を最小限にすることです。
Oracle Forms Servicesは、イベント・バンドルを通じてトリガー・イベントをグループ化することで、イベント・バンドルを実装します。イベント・バンドルは、2つのオブジェクト間をナビゲートしている間にトリガーされたすべてのイベントを集めて、それらを単一のパケットとしてOracle Forms Servicesに配布して処理します。
たとえば、ユーザーが項目Aから項目Bにナビゲートする場合(あるエントリ・フィールドから別のフィールドにタブする場合など)、PreトリガーとPostトリガーの範囲が起動対象となり、それぞれForms Services上での処理が必要です。ナビゲートによって複数のオブジェクトを横切る場合(離れているオブジェクトに対してマウスのクリックを行った場合など)、イベント・バンドルは通過されたすべてのオブジェクトからすべてのイベントを集めて、そのグループを単一のネットワーク・メッセージとしてOracle Forms Servicesに配信します。
gzipCompressApplet
やremoveCommentLinesFromApplet
などのアプレット/サーブレット・パラメータは、起動パフォーマンスの向上に役立ちます。これらのパラメータおよびその他の有用なパラメータの詳細は、「Web構成パラメータ」を参照してください。
クライアントでのアプリケーション画面の効率的なレンダリング
指定したフォーム内のすべてのボイラープレート・オブジェクトは、仮想グラフィック・システム(VGS)ツリーの一部です。VGSは、すべてのOracle Forms Developer製品に共通の図形サブコンポーネントです。VGSツリー・オブジェクトは、座標、カラー、線幅およびフォントなどの属性を使用して記述します。オブジェクトのVGSツリーをJavaクライアントに送信する場合、送信する属性のみが指定したオブジェクト・タイプのデフォルトと異なる属性になります。
イメージは圧縮されたJPEGイメージとして送信および格納されます。これにより、ネットワーク・オーバーヘッドとクライアントで必要なメモリー量の両方を減らすことができます。
リソースの最小化には、クライアントおよびサーバー・プロセスのメモリー・オーバーヘッドの最小化も含まれます。ネットワークを最適な状態で使用するには、帯域幅を最小に維持し、クライアントとOracle Forms Services間の通信で使用するパケット数を最小化してネットワークの待機時間の影響を含めることが必要です。