アプリケーションサーバーのパフォーマンスの強化 enhancing-application-server-performance
ここでは、AEM Forms アプリケーションサーバーのパフォーマンスを向上させるために設定できるオプション設定について説明します。
アプリケーションサーバーのデータソースの設定 configuring-application-server-data-sources
AEM Forms は、AEM Forms リポジトリをデータソースとして使用します。AEM Forms リポジトリにはアプリケーションアセットが格納されます。また実行時に、サービスは、自動化されたビジネスプロセスの実行の一環として、リポジトリからアセットを取得できます。
実行中の AEM Forms モジュールの数や、アプリケーションにアクセスしている同時ユーザーの数によっては、このデータソースへのアクセス負荷が大きくなる場合があります。データソースへのアクセスは、接続プールを使用して最適化できます。「接続プール」は、アプリケーションやサーバーオブジェクトがデータベースへのアクセスを必要とするたびに生じる、新しいデータベース接続の作成に伴うオーバーヘッドを回避するために使用される技術です。通常、接続プールは Web ベースのアプリケーションおよびエンタープライズアプリケーションで使用されます。また、アプリケーションサーバーによって処理されるのが一般的ですが、必ずしもそれだけに限定されません。
接続を使い切らないように接続プールのパラメーターを適切に設定することが重要です。接続が足りなくなった場合、アプリケーションのパフォーマンスが低下する可能性があります。
接続プールを適切に設定するには、アプリケーションサーバー管理者がピーク時間帯に接続プールを監視することが重要になります。監視によって、アプリケーションやユーザーがいつでも十分な数の接続を使用できるようになります。ほとんどのアプリケーションサーバーには監視用のツールが組み込まれています。
WebLogic Server 管理コンソールでは、ドメイン内の JDBC データソースインスタンスごとに様々な統計値を監視できます。詳しくは、WebLogic のドキュメントを参照してください。
アプリケーションサーバー管理者は、適切な接続プールの設定を決める際に、この情報をデータベース管理者に伝えてください。データベース管理者がこの情報を必要とするのは、データベース接続の数はデータソース用の接続プール内の接続数に等しくなるためです。そして、以下に示すように、アプリケーションサーバーおよびデータソースの種類に応じて、接続プールを設定する手順を実行してください。
Oracle および MySQL に対する WebLogic の接続プールの設定 configure-connection-pool-settings-for-weblogic-for-oracle-and-mysql
-
「Domain Structure」で、Services/JDBC/Data Sources をクリックし、右側のパネルの「IDP_DS」をクリックします。
-
次の画面で、Configuration/「Connection Pool」タブをクリックして、以下のボックスに値を入力します。
- 「Initial Capacity」
- 「Maximum Capacity」
- 「Capacity Increment」
- 「Statement Cache Size」
-
「保存」をクリックし、「変更をアクティベート」をクリックします。
-
WebLogic 管理対象サーバーを再起動します。
SQLServer に対する WebLogic の接続プールの設定 configure-connection-pool-settings-for-weblogic-for-sqlserver
-
Change Center で、「Lock & Edit」をクリックします。
-
「Domain Structure」で、Services/JDBC/Data Sources をクリックし、右側のパネルの「EDC_DS」をクリックします。
-
次の画面で、Configuration/「Connection Pool」タブをクリックして、以下のボックスに値を入力します。
- 「Initial Capacity」
- 「Maximum Capacity」
- 「Capacity Increment」
- 「Statement Cache Size」
-
「保存」をクリックし、「変更をアクティベート」をクリックします。
-
WebLogic 管理対象サーバーを再起動します。
DB2 に対する WebSphere の接続プールの設定 configure-connection-pool-settings-for-websphere-for-db2
- ナビゲーションツリーで、Resources/JDBC/JDBC Providers をクリックします。右側のパネルで、作成したデータソース(DB2 Universal JDBC Driver Provider または LiveCycle - db2 - IDP_DS)をクリックします。
- 「Additional Properties」で「Data Sources」をクリックし、「IDP_DS」を選択します。
- 次の画面の「Additional Properties」で「Connection Pool Properties」をクリックし、「Maximum connections」ボックスと「Minimum Connections」ボックスに値を入力します。
- 「OK」または「Apply」をクリックし、「Save Directly To Master Configuration」をクリックします。
Oracle に対する WebSphere の接続プールの設定 configure-connection-pool-settings-for-websphere-for-oracle
- ナビゲーションツリーで、Resources/JDBC/JDBC Providers をクリックします。右側のパネルで、作成した Oracle JDBC Driver データソースをクリックします。
- 「Additional Properties」で「Data Sources」をクリックし、「IDP_DS」を選択します。
- 次の画面の「Additional Properties」で「Connection Pool Properties」をクリックし、「Maximum connections」ボックスと「Minimum Connections」ボックスに値を入力します。
- 「OK」または「Apply」をクリックし、「Save Directly To Master Configuration」をクリックします。
SQLServer に対する WebSphere の接続プールの設定 configure-connection-pool-settings-for-websphere-for-sqlserver
- ナビゲーションツリーで、Resources/JDBC/JDBC Providers をクリックし、右側のパネルで、作成した User-Defined JDBC Driver データソースをクリックします。
- 「Additional Properties」で「Data Sources」をクリックし、「IDP_DS」を選択します。
- 次の画面の「Additional Properties」で「Connection Pool Properties」をクリックし、「Maximum Connections」ボックスと「Minimum Connections」ボックスに値を入力します。
- 「OK」または「Apply」をクリックし、「Save Directly To Master Configuration」をクリックします。
インラインドキュメントの最適化と JVM メモリに対する影響 optimizing-inline-documents-and-impact-on-jvm-memory
比較的小さいサイズのドキュメントを処理することが多い場合は、ドキュメント転送速度とストレージ領域に関するパフォーマンスを向上させることができます。それには、AEM Forms 製品に対して次の設定を適用します。
- AEM Forms におけるデフォルトのドキュメントの最大インラインサイズを、ほとんどのドキュメントのサイズよりも大きい値に増やします。
- 大きいファイルを処理する場合は、高速ディスクシステムまたは RAM ディスクにあるストレージディレクトリを指定します。
最大インラインサイズとストレージディレクトリ(AEM Forms の一時ファイルディレクトリと GDS ディレクトリ)は、管理コンソールで設定します。
ドキュメントサイズと最大インラインサイズ document-size-and-maximum-inline-size
AEM Forms に送信して処理するドキュメントのサイズがデフォルトのドキュメント最大インラインサイズ以下の場合、ドキュメントはサーバーにインラインで保存され、Adobe Document オブジェクトとしてシリアライズされます。ドキュメントをインラインで格納することで、パフォーマンスを大幅に向上できます。ただし、Forms Workflow を使用している場合は、管理の目的でコンテンツもデータベースに保存されることがあります。このため、最大インラインサイズを増やすと、データベースサイズに影響する場合があります。
最大インラインサイズよりも大きいサイズのドキュメントはローカルファイルシステムに格納されます。サーバーとの間で転送される Adobe Document オブジェクトがそのファイルへの唯一のポインターとなります。
ドキュメントコンテンツがインライン化される(つまり、最大インラインサイズ未満である)場合、コンテンツはドキュメントのシリアライズペイロードの一部としてデータベースに保存されます。このため、最大インラインサイズを増やすと、データベースサイズに影響する場合があります。
最大インラインサイズの変更
-
管理コンソールで、設定/コアシステム設定/設定をクリックします。
-
「デフォルトのドキュメント最大インラインサイズ」ボックスに値を入力し、「OK」をクリックします。
note note NOTE ドキュメント最大インラインサイズプロパティの値は、JEE 環境上の AEM Forms と、JEE 環境上の OSGi バンドルを含む AEM Forms 上の AEM Forms と同一である必要があります。この手順では、JEE 環境上の AEM Forms の値のみを更新し、OSGi バンドル上の AEM Forms に含まれる JEE 環境上の AEM Forms の値は更新しません。 -
次のシステムプロパティでアプリケーションサーバーを再起動します。
com.adobe.idp.defaultDocumentMaxInlineSize=
[value specified in Step 2]
note note NOTE 上記のシステムプロパティは、JEE 環境上の AEM Forms と、OSGi バンドル上の AEM Forms に含まれる JEE 環境上の AEM Forms に対して設定された「ドキュメント最大インラインサイズ」プロパティの値を上書きします。
JVM 最大ヒープサイズ jvm-maximum-heap-size
最大インラインサイズを増やすと、シリアライズされたドキュメントの保存に、より多くのメモリが必要になります。このため、通常は JVM 最大ヒープサイズも増やす必要があります。
大量のドキュメントを処理する負荷の高いシステムでは、JVM ヒープメモリを急速に飽和させる場合があります。OutOfMemoryError を回避するには、JVM 最大ヒープサイズを、インラインドキュメントのサイズに任意の時点で通常実行されるドキュメントの数を掛けた値だけ増やします。
JVM 最大ヒープサイズの増加量 =(インラインドキュメントサイズ)x(処理するドキュメントの平均数)
JVM 最大ヒープサイズの計算
この例では、現在の JVM 最大ヒープが 512 MB、最大インラインサイズは 64 KB に設定されています。サーバーの設定は、10 件のジョブを同時に実行し、各ジョブに 9 個の入力ファイルと 1 個の結果ファイルがある(ジョブ 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-enhancements
ここでは、WebSphere Application Server 環境に固有の設定について説明します。
JVM に割り当てられる最大メモリサイズの増加 increasing-the-maximum-memory-allocated-to-the-jvm
Configuration Manager を実行しているとき、またはコマンドラインユーティリティ ejbdeploy を使用して Enterprise JavaBeans(EJB)デプロイコードを生成しようとしているときに、OutOfMemory エラーが発生した場合は、JVM に割り当てるメモリを増やします。
-
[appserver root]/deploytool/itp/ ディレクトリの ejbdeploy スクリプトを編集します。
- Windows:
ejbdeploy.bat
- Linux および UNIX:
ejbdeploy.sh
- Windows:
-
-Xmx256M
パラメーターを検索して、値を現在のものより高い値に変更します(-Xmx1024M
など)。 -
ファイルを保存します。
-
ejbdeploy
コマンドを実行するか、Configuration Manager を使用して再デプロイします。
LDAP を使用した Windows Server 2003 のパフォーマンスの向上 improving-windows-server-2003-performance-with-ldap
ここでは、Microsoft Windows Server 2003 オペレーティングシステム環境に固有の設定について説明します。
検索のための接続で接続プールを使用すると、必要なポート数を 50 %減らすことができます。これは、接続で常に特定のドメインの同じ証明書が使用され、コンテキストと関連オブジェクトが明示的に閉じられるためです。
接続プールを使用するための Windows Server の設定 configure-your-windows-server-for-connection-pooling
-
スタート/ファイル名を指定して実行をクリックし、「名前」ボックスに
regedit
と入力して「OK」をクリックし、レジストリエディターを起動します。 -
レジストリキー
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
に移動します。 -
レジストリエディターの右側のパネルで、TcpTimedWaitDelay という値の名前を探します。値の名前が表示されない場合は、メニューバーから編集/新規/DWORD 値を選択して名前を追加します。
-
「名前」ボックスに
TcpTimedWaitDelay
と入力します。note note NOTE 点滅するカーソルと New Value #
がボックス内に表示されない場合は、右側のパネル内を右クリックし、「名前の変更」を選択して、「名前」ボックスにTcpTimedWaitDelay
と入力します。 -
MaxUserPort、MaxHashTableSize および MaxFreeTcbs の値について、手順 4 を繰り返します。
-
右側のパネル内をダブルクリックし、TcpTimedWaitDelay 値を設定します。「表記」で「10 進」を選択し、「値のデータ」ボックスに
30
と入力します。 -
右側のウィンドウ内をダブルクリックし、MaxUserPort 値を設定します。「表記」で「10 進」を選択し、「値のデータ」ボックスに
65534
と入力します。 -
右側のウィンドウ内をダブルクリックし、MaxHashTableSize 値を設定します。「表記」で「10 進」を選択し、「値のデータ」ボックスに
65536
と入力します。 -
右側のウィンドウ内をダブルクリックし、MaxFreeTcbs 値を設定します。「表記」で「10 進」を選択し、「値のデータ」ボックスに
16000
と入力します。