アプリケーションサーバーのパフォーマンスの強化

ここでは、AEM Forms アプリケーションサーバーのパフォーマンスを向上させるために設定できるオプション設定について説明します。

アプリケーションサーバーのデータソースの設定

AEM Forms は、AEM Forms リポジトリをデータソースとして使用します。AEM Forms リポジトリにはアプリケーションアセットが格納されます。また実行時に、サービスは、自動化されたビジネスプロセスの実行の一環として、リポジトリからアセットを取得できます。

実行中の AEM Forms モジュールの数や、アプリケーションにアクセスしている同時ユーザーの数によっては、これらのデータソースへのアクセス負荷が大きくなる場合があります。データソースへのアクセスは、接続プールを使用して最適化できます。「接続プール」**​は、アプリケーションやサーバーオブジェクトがデータベースへのアクセスを必要とするたびに生じる、新しいデータベース接続の作成に伴うオーバーヘッドを回避するために使用される技術です。通常、接続プールは Web ベースのアプリケーションおよびエンタープライズアプリケーションで使用されます。また、アプリケーションサーバーによって処理されるのが一般的ですが、必ずしもそれだけに限定されません。

接続を使い切らないように接続プールのパラメーターを適切に設定することが重要です。接続が足りなくなった場合、アプリケーションのパフォーマンスが低下する可能性があります。

接続プールを適切に設定するには、アプリケーションサーバー管理者がピーク時間帯に接続プールを監視することが重要になります。監視によって、アプリケーションやユーザーがいつでも十分な数の接続を使用できるようになります。ほとんどのアプリケーションサーバーには監視用のツールが組み込まれています。

WebLogic Server 管理コンソールでは、ドメイン内の JDBC データソースインスタンスごとに様々な統計値を監視できます。詳しくは WebLogic のドキュメントを参照してください。

アプリケーションサーバー管理者は、適切な接続プールの設定を決める際に、それらの情報をデータベース管理者に伝えてください。データベース管理者がこの情報を必要とするのは、データベース接続の数はデータソース用の接続プール内の接続数に等しくなるためです。そして、以下に示すアプリケーションサーバーおよびデータソースの種類に応じて、接続プールを設定する手順を実行してください。

Oracle および MySQL に対する WebLogic の接続プールの設定

  1. 「Domain Structure」で、Services/JDBC/Data Sources をクリックし、右側のウィンドウの「IDP_DS」をクリックします。

  2. 次の画面で、「Configuration」タブ/Connection Pool をクリックして、以下のボックスに値を入力します。

    • 「Initial Capacity」
    • 「Maximum Capacity」
    • 「Capacity Increment」
    • 「Statement Cache Size」
  3. 「Save」をクリックし、「Activate Changes」をクリックします。

  4. WebLogic 管理対象サーバーを再起動します。

SQLServer に対する WebLogic の接続プールの設定

  1. 「Change Center」で、「Lock & Edit」をクリックします。

  2. 「Domain Structure」で、Services/JDBC/Data Sources をクリックし、右側のウィンドウの「EDC_DS」をクリックします。

  3. 次の画面で、「Configuration」タブ/Connection Pool をクリックして、以下のボックスに値を入力します。

    • 「Initial Capacity」
    • 「Maximum Capacity」
    • 「Capacity Increment」
    • 「Statement Cache Size」
  4. 「Save」をクリックし、「Activate Changes」をクリックします。

  5. WebLogic 管理対象サーバーを再起動します。

DB2 に対する WebSphere の接続プールの設定

  1. ナビゲーションツリーで、Resources/JDBC/JDBC Providers をクリックします。右側のウィンドウで、作成したデータソース(DB2 Universal JDBC Driver Provider または LiveCycle - db2 - IDP_DS)を選択します。
  2. 「Additional Properties」で「Data Sources」をクリックし、「IDP_DS」を選択します。
  3. 次の画面の「Additional Properties」で「Connection Pool Properties」をクリックし、「Maximum connections」ボックスと「Minimum Connections」ボックスに値を入力します。
  4. 「OK」または「Apply」をクリックし、「Save Directly To Master Configuration」をクリックします。

Oracle に対する WebSphere の接続プールの設定

  1. ナビゲーションツリーで、Resources/JDBC/JDBC Providers をクリックします。右側のウィンドウで、作成した Oracle JDBC Driver データソースをクリックします。
  2. 「Additional Properties」で「Data Sources」をクリックし、「IDP_DS」を選択します。
  3. 次の画面の「Additional Properties」で「Connection Pool Properties」をクリックし、「Maximum connections」ボックスと「Minimum Connections」ボックスに値を入力します。
  4. 「OK」または「Apply」をクリックし、「Save Directly To Master Configuration」をクリックします。

SQL Server に対する WebSphere の接続プールの設定

  1. ナビゲーションツリーで、Resources/JDBC/JDBC Providers をクリックし、右側のウィンドウで、作成した User-Defined JDBC Driver データソースをクリックします。
  2. 「Additional Properties」で「Data Sources」をクリックし、「IDP_DS」を選択します。
  3. 次の画面の「Additional Properties」で「Connection Pool Properties」をクリックし、「Maximum Connections」ボックスと「Minimum Connections」ボックスに値を入力します。
  4. 「OK」または「Apply」をクリックし、「Save Directly To Master Configuration」をクリックします。

インラインドキュメントの最適化と JVM メモリに対する影響

比較的小さいサイズのドキュメントを処理することが多い場合は、ドキュメント転送速度と記憶領域に関するパフォーマンスを向上させることができます。それには、AEM Forms 製品に対して以下の設定を適用します。

  • AEM Forms におけるデフォルトのドキュメントの最大インラインサイズを、ほとんどのドキュメントのサイズよりも大きい値に増やします。
  • 大きいファイルを処理する場合は、高速ディスクシステムまたは RAM ディスクにあるストレージディレクトリを指定します。

最大インラインサイズとストレージディレクトリ(AEM Forms の一時ファイルディレクトリと GDS ディレクトリ)は、管理コンソールで設定します。

ドキュメントサイズと最大インラインサイズ

AEM Forms に送信して処理するドキュメントのサイズがデフォルトのドキュメント最大インラインサイズ以下の場合、ドキュメントはサーバーにインラインで保存され、Adobe Document オブジェクトとしてシリアライズされます。ドキュメントをインラインで格納することで、パフォーマンスを大幅に向上させることができます。ただし、forms ワークフローを使用している場合は、管理のためにコンテンツもデータベースに保存されることがあります。このため、最大インラインサイズを増やすと、データベースサイズに影響する場合があります。

最大インラインサイズよりも大きいサイズのドキュメントはローカルファイルシステムに格納されます。サーバーとの間で転送される Adobe Document オブジェクトがそのファイルへの唯一のポインターとなります。

ドキュメントコンテンツがインライン化される(つまり、最大インラインサイズ未満である)と、コンテンツはドキュメントのシリアライズペイロードの一部としてデータベースに保存されます。このため、最大インラインサイズを増やすと、データベースサイズに影響する場合があります。

最大インラインサイズの変更

  1. 管理コンソールで、設定/コアシステム設定/設定をクリックします。

  2. 「デフォルトのドキュメント最大インラインサイズ」ボックスに値を入力し、「OK」をクリックします。

    メモ

    JEE環境上のAEM FormsとJEE環境上のAEM Formsバンドル上のOSGiのAEM Formsでは、ドキュメントの最大インラインサイズプロパティの値を同じにする必要があります。 この手順では、JEE 環境上の AEM Forms の値のみを更新し、OSGi バンドル上の AEM Forms に含まれる JEE 環境上の AEM Forms の値は更新していません。

  3. 次のシステムプロパティでアプリケーションサーバーを再起動します。

    com.adobe.idp.defaultDocumentMaxInlineSize=[value specified in Step 2]

    メモ

    上記のシステムプロパティは、JEE 環境上の AEM Forms と、OSGi バンドル上の AEM Forms に含まれる JEE 環境上の AEM Forms に対して設定された「ドキュメント最大インラインサイズ」プロパティの値を上書きします。

メモ

デフォルトの最大インラインサイズは 65536 バイトです。

JVM 最大ヒープサイズ

最大インラインサイズを増やすと、シリアライズされたドキュメントを保存するために多くのメモリが必要になります。このため、通常は JVM 最大ヒープサイズも増やす必要があります。

大量のドキュメントを処理している負荷の高いシステムでは、JVM ヒープメモリがすぐにいっぱいになることがあります。OutOfMemoryError を防ぐために、インラインドキュメントのサイズと稼働中に通常実行されるドキュメントの数を掛けた値を求めて、JVM 最大ヒープサイズにその分を上乗せしてください。

JVM 最大ヒープサイズの増加量 = (インラインドキュメントサイズ) x (処理するドキュメントの平均数)

JVM 最大ヒープサイズの計算

この例では、現在の JVM 最大ヒープが 512 MB、最大インラインサイズは 64 KB に設定されています。サーバーの設定は、100 個のジョブが同時に実行されていて、各ジョブに 9 個の入力ファイルと 1 個の結果ファイルがある(ジョブあたり合計 10 個のファイルがあり、100 個のジョブを同時に処理する)シナリオに対応できるように指定する必要があります。ファイルのサイズはすべて 512 KB 未満です。

すべてのファイルをインラインで格納するには、最大インラインサイズを少なくとも 512 KB に設定する必要があります。

JVM 最大ヒープサイズの必要な増加量は、次の式で算出します。

(512 KB)x(100)=51200 KB(50 MB)

JVM 最大ヒープサイズは、50 MB 単位で増やす必要があり、合計 562 MB まで増やすことができます。

ヒープフラグメンテーションについて

ヒープフラグメンテーションの傾向があるシステムで、インラインドキュメントのサイズに大きな値を設定すると、OutOfMemoryError が発生する可能性が高くなります。ドキュメントをインラインで格納するには、JVM ヒープメモリに十分な連続スペースを確保する必要があります。一部のオペレーティングシステム、JVM およびガベージコレクションアルゴリズムでは、ヒープフラグメントが発生しがちです。フラグメンテーションにより、連続するヒープ領域の量が減少し、合計空き容量が十分にある場合でも OutOfMemoryError が発生することがあります。

例えば、アプリケーションサーバーでの以前の処理により JVM ヒープがフラグメントされた状態になっている場合、ガベージコレクタはヒープを十分に圧縮することができず、空き領域の大きなブロックを確保することができません。最大インラインサイズの増加に伴って JVM 最大ヒープサイズを調整した場合でも、OutOfMemoryError が発生することがあります。

ヒープフラグメンテーションに対応するには、インラインドキュメントのサイズを合計ヒープサイズの 0.1 %以下に設定する必要があります。例えば、JVM 最大ヒープサイズが 512 MB の場合は、最大インラインサイズを 512 KB(512 MB x 0.001 = 0.512 MB)に設定できます。

WebSphere Application Server の強化

ここでは、WebSphere Application Server 環境に固有の設定について説明します。

JVM に割り当てられる最大メモリサイズの増加

Configuration Manager を実行しているとき、またはコマンドラインユーティリティ ejbdeploy を使用して Enterprise JavaBeans(EJB)デプロイコードを生成しようとしているときに、OutOfMemory エラーが発生した場合は、JVM に割り当てるメモリを増やします。

  1. [appserver root]/deploytool/itp/ディレクトリのejbdeployスクリプトを編集します。

    • (Windows) ejbdeploy.bat
    • (LinuxおよびUNIX) ejbdeploy.sh
  2. -Xmx256Mパラメーターを探し、-Xmx1024Mなど、より高い値に変更します。

  3. ファイルを保存します。

  4. ejbdeploy コマンドを実行するか、または Configuration Manager を使用して再デプロイします。

LDAP を使用した Windows Server 2003 のパフォーマンスの向上

ここでは、Microsoft Windows Server 2003 オペレーティングシステム環境に固有の設定について説明します。

検索のための接続で接続プールを使用すると、必要なポート数を 50 %減らすことができます。これは、接続で常に特定のドメインの同じ証明書が使用され、コンテキストと関連オブジェクトが明示的に閉じられるためです。

接続プールを使用するための Windows Server の設定

  1. スタート/ファイル名を指定して実行をクリックし、「名前」ボックスに regedit と入力して「OK」をクリックし、レジストリエディターを起動します。

  2. レジストリキーHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parametersに移動します。

  3. レジストリエディターの右側のウィンドウで、TcpTimedWaitDelay という値の名前を探します。値の名前が表示されない場合は、メニューバーから編集/新規/DWORD 値を選択して名前を追加します。

  4. 「名前」ボックスにフラグメント名として「TcpTimedWaitDelay

    メモ

    点滅するカーソルとボックス内にNew Value #が表示されない場合は、右側のパネル内を右クリックし、「名前の変更」を選択し、「名前」ボックスに「TcpTimedWaitDelay.」と入力します。

  5. MaxUserPort、MaxHashTableSize および MaxFreeTcbs の値について、手順 4 を繰り返します。

  6. 右側のウィンドウ内をダブルクリックし、TcpTimedWaitDelay 値を設定します。「表記」で「10 進」を選択し、「値のデータ」ボックスに 30 と入力します。

  7. 右側のウィンドウ内をダブルクリックし、MaxUserPort 値を設定します。「表記」で「10 進」を選択し、「値のデータ」ボックスに 65534 と入力します。

  8. 右側のウィンドウ内をダブルクリックし、MaxHashTableSize 値を設定します。「表記」で「10 進」を選択し、「値のデータ」ボックスに 65536 と入力します。

  9. 右側のウィンドウ内をダブルクリックし、MaxFreeTcbs 値を設定します。「表記」で「10 進」を選択し、「値のデータ」ボックスに 16000 と入力します。

メモ

レジストリエディターまたは別の方法を使用してレジストリを誤って変更すると、重大な問題が発生する場合があります。これらの問題を解決するために、オペレーティングシステムの再インストールが必要になる場合があります。レジストリの変更はユーザーの責任で行ってください。

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now