Liberty のシステム調整
Liberty のパラメーターおよび属性を調整することができます。
このタスクについて
手順
- JVM を調整します。 開発環境を構成する場合でも、実稼働環境を構成する場合でも、JVM の調整は非常に重要な調整ステップです。 Liberty の JVM を調整する場合は、${server.config.dir} ディレクトリーの jvm.options ファイルを使用します。使用する各 JVM 引数を 1 行に 1 つのオプションずつ指定できます。 詳しくは、Liberty 環境のカスタマイズを参照してください。jvm.options ファイルの例は以下のとおりです。
-Xms50m -Xmx256m
開発環境では、サーバーの始動を速くしたいことがあるため、最小ヒープ・サイズを小さい値に設定して、 最大ヒープ・サイズをアプリケーションに必要な値に設定することを検討します。 実稼働環境では、最小ヒープ・サイズと最大ヒープ・サイズを同じ値に設定すると、ヒープの拡張や縮小を回避することで、最適なパフォーマンスが実現される可能性があります。
- トランスポート・チャネル・サービスを調整します。 トランスポート・チャネル・サービスは、クライアント接続、HTTP の入出力処理、スレッド・プール、および接続プールを管理します。 Liberty のアプリケーションには、さまざまなエレメントの次の属性を使用して、ランタイム・パフォーマンスまたはスケーラビリティー、あるいはその両方を向上させることができます。
- httpOptions の maxKeepAliveRequests
- このオプションでは、パーシスタント接続が使用可能の場合に、単一の HTTP 接続で許可されるパーシスタント要求の最大数を指定します。
値が -1 の場合、無制限であることを示します。この
オプションは、待ち時間の少ないアプリケーションやスループットの高いアプリケーション、および、
新規接続の構築にコストがかかる状況で使用する SSL 接続を
サポートします。以下の例は、server.xml ファイル内でのこのオプションのコーディング方法を示します。
<httpOptions maxKeepAliveRequests="-1" />
- connectionManager の maxPoolSize
- このオプションでは、接続プールの物理接続の最大数を指定します。
デフォルト値は 50 です。ここでの最適な設定は、アプリケーションの特性によって異なります。
すべてのスレッドがデータベースへの接続を取得するアプリケーションでは、
coreThreads 属性に対して 1:1 のマッピングで開始する場合があります。
以下の例は、server.xml ファイル内でのこのオプションのコーディング方法を示します。
<connectionManager ... maxPoolSize="40" />
- connectionManager の purgePolicy
- このオプションでは、失効した接続がプールで検出された場合にどの接続を破棄するかを指定します。
デフォルト値は、プール全体です。
障害がある接続のみをパージするほうが適切な場合があります。以下の例は、server.xml ファイル内でのこのオプションのコーディング方法を示します。
<connectionManager ... purgePolicy="FailingConnectionOnly" />
- connectionManager の numConnectionsPerThreadLocal
- このオプションでは、各 executor スレッドごとにキャッシュに入れるデータベース接続の数を指定します。 この設定では、各スレッドごとに指定数のデータベース接続を予約することで、大規模なマルチ・コア (8+) マシンで大幅な改善を図ることができます。
- スレッド・ローカル・ストレージを接続に使用すると、マルチスレッドのシステムでアプリケーションのパフォーマンスを向上させることができます。
numConnectionsPerThreadLocal を 1 以上に設定すると、
スレッドごとにこれらの接続が、スレッド・ローカル・ストレージに格納されます。
numConnectionsPerThreadLocal を使用する際には、以下の他の 2 つの値を検討してください。
- アプリケーション・スレッドの数
- 接続プールの最大接続数
<connectionManager ... numConnectionsPerThreadLocal="1" />
- dataSource の statementCacheSize
- このオプションでは、接続当たりのキャッシュに入れる準備済みステートメントの最大数を指定します。
このオプションを設定するには、次の前提条件を完了しておきます。
- すべての固有の準備済みステートメントについて、アプリケーション・コード (あるいは、データベースまたはデータベース・ドライバーから収集した SQL トレース) を確認します。
- キャッシュ・サイズがステートメントの数より大きいことを確認します。
<dataSource ... statementCacheSize="60" >
- dataSource の isolationLevel
- データ・ソースの分離レベルでは、データ保全性と並行性の度合いを指定します。これにより、データベース・ロックのレベルが制御されることになります。
パフォーマンスが最も良い (保全性が最も低い) ものからパフォーマンスが最も悪い (保全性が最も高い) ものへの順序で、以下の 4 つのオプションがあります。
- TRANSACTION_READ_UNCOMMITTED
- ダーティー読み取り、反復不能読み取り、および幻像読み取りが発生する可能性があります。
- TRANSACTION_READ_COMMITTED
- ダーティー読み取りは防止されます。反復不能読み取りと幻像読み取りは発生する可能性があります。
- TRANSACTION_REPEATABLE_READ
- ダーティー読み取りと反復不能読み取りは防止されます。幻像読み取りは発生する可能性があります。
- TRANSACTION_SERIALIZABLE
- ダーティー読み取り、反復不能読み取り、および幻像読み取りは防止されます。
<dataSource ... isolationLevel="TRANSACTION_READ_COMMITTED">
- デフォルト実行プログラムを調整します。
Liberty のデフォルト実行プログラムはセルフチューニングであり、スレッドを動的に追加または削除して現行ワークロードに適応します。多くのワークロードの場合、実行プログラムには調整は必要ありません。スレッド作成で特定の問題が発生しない限り、実行プログラムのどの設定も変更しないことをお勧めします。
必要な場合、server.xml ファイル内に executor エレメントの coreThreads パラメーターと maxThreads パラメーターを構成して、Liberty 自動調整コードの下限値と上限値を設定できます。実行プログラムには、実行プログラムをデッドロック・シナリオから抜け出させるためにスレッドを追加する、積極的なアンチデッドロック・コードが含まれているため、通常、coreThreads 設定は必要ありません。まれに、アンチデッドロック・コードが、必要以上のスレッドを追加することがあります。その場合は、executor エレメントの maxThreads パラメーターを使用して、実行プログラムが作成を許可されるスレッド数に上限を設定することができます。
- サーブレットの応答時間を減らします。
サーブレットの応答時間を減らすには、以下の属性を server.xml ファイルに追加します。
<webContainer skipMetaInfResourcesProcessing="true"/>
- アイドル・サーバーの CPU 時間を削減します。
アイドル状態のサーバー CPU 時間を削減するには、以下の属性を server.xml ファイルに追加します。
<applicationMonitor dropinsEnabled="false" updateTrigger="disabled"/> <config updateTrigger="disabled"/>
この属性を追加すると、サーバーは構成またはアプリケーションの更新をモニターしなくなります。
- 起動時間を調整します。
- CDI 1.2
- デフォルトで、CDI 1.2 フィーチャーはすべてのアプリケーション・アーカイブをスキャンします。CDI 1.2 フィーチャーは大幅に起動時間を増加させる可能性があり、大きいアプリケーションでは最も影響が大きくなります。enableImplicitBeanArchives の値を false に設定することにより、アノテーションの暗黙的アーカイブ・スキャンを使用不可にできます。この設定により、アーカイブに beans.xml ファイルが含まれていない限り、アーカイブのスキャンがスキップされます。
<cdi12 enableImplicitBeanArchives="false"/>
注: cdi-1.2 フィーチャーは、server.xml ファイルの <features> セクションに指定されていなくても組み込まれることがあります。この理由は、 webProfile-7.0 および javaee-7.0 などの他のフィーチャーに cdi-1.2 フィーチャーが組み込まれているためです。messages.log ファイル内の「The server installed the following features:」を参照して、cdi-1.2 がインストールされたかどうか確認してください。
サブトピック
- セキュア・アプリケーションのための Liberty の調整
セキュア・アプリケーションのパフォーマンスを最大化するため、Liberty を調整することができます。 - Liberty での統合 LDAP リポジトリーの調整
server.xml ファイル内のキャッシュ・エレメントやコンテキスト・プール・エレメントをモニターおよび調整することで、統合 LDAP リポジトリーのパフォーマンスを改善できます。 Liberty でのマイクロサービスの回復力の向上
MicroProfile のフォールト・トレランス・フィーチャーを使用すると、サービス呼び出しの回復力を向上させることができます。このフィーチャーは、Eclipse Microprofile Fault Tolerance 仕様 1.0 の実装です。このフィーチャーは、再試行、回路ブレーカー、バルクヘッド、タイムアウト、およびフォールバックなどのパターンによって回復力のあるマイクロサービスをサポートするプログラミング・モデルを、Failsafe オープン・ソース・ライブラリーを使用して提供します。

ファイル名: twlp_tun.html