Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

EAP 6 でデータソース接続プールをフラッシュする

Solution Verified - Updated -

Environment

  • Red Hat JBoss Enterprise Application Platform (EAP) 6

Issue

  • データソース接続プールをフラッシュまたはリセットするにはどうしたら良いですか?
  • アイドル状態の接続だけをフラッシュするにはどうしたら良いですか?
  • flush-all-connection-in-pool は、データソース接続プールにあるすべての接続 (アイドル、アクティブ、および使用中) をフラッシュしますか?
  • flush-all-connection-in-pool は、アクティブまたは使用中の接続を即座に終了しますか? または完了するまで待ちますか?

Resolution

JBoss Management Command Line Interface (CLI) で flush コマンドを実行すると、接続プールをフラッシュできます。

アイドル状態の接続をフラッシュする

以下の CLI コマンドは、"ExampleDS" データソースプールから、アイドル状態の接続をすべてフラッシュします。

スタンドアロンモード

 /subsystem=datasources/data-source=ExampleDS/:flush-idle-connection-in-pool

ドメインモード

/host=master/server=server-one/subsystem=datasources/data-source=ExampleDS/:flush-idle-connection-in-pool

注意:
1. アプリケーションコンポーネントに 確保されている (DataSource.getConnection() に呼び出され、Connection.close() を呼び出してプールに接続を返していない) 接続はアイドル状態ではないため、flush-idle-connection-in-pool コマンドの影響は受けません
2. アイドル状態の接続をフラッシュすると、プールのサイズが、プールに指定している min-pool-size を下回る可能性があります。
3. アイドル状態の接続だけがプールにある場合、プールはシャットダウンし、新しいプールインスタンスが適宜作成されます。これにより、キャッシュされている DataSource 参照が無効になります (DataSource のキャッシュの参照は推奨されていません)。
4. xa-datasource の場合は、CLI コマンドで、data-source の代わりに xa-data-source を使用してください。

すべての接続をフラッシュする

アイドル状態の接続だけをフラッシュする方法として、以下の CLI コマンドを使用して、"ExampleDS" データソースプールからすべての接続をすべてフラッシュするという方法もあります。

スタンドアロンモード

/subsystem=datasources/data-source=ExampleDS/:flush-all-connection-in-pool 

ドメインモード

/host=master/server=server-one/subsystem=datasources/data-source=ExampleDS/:flush-all-connection-in-pool

注意:
1. flush-all-connection-in-pool コマンドは、アイドル状態の接続や使用中の接続 (つまりアプリケーションコンポーネントによって確保されている) を即座に終了1します。ただし、アプリケーションコンポーネントで接続中の場合はエラーが発生する可能性があります2。したがって、多くの場合、flush-all-in-poolプロダクションシステムでは推奨されていません
2. プールはシャットダウンし、新しいプールインスタンスが適宜作成されます。これにより、キャッシュされている DataSource 参照が無効になります (DataSource のキャッシュの参照は推奨されていません)。
3. xa-datasource の場合は、CLI コマンドで、data-source の代わりに xa-data-source を使用してください。


  1. EAP6 では、コマンドが、接続が閉じる (プールに返す) のを待ってから接続を終了する点が、EAP 5 とは異なります。 

  2. アプリケーションのコーディング方法によっては、全てのフラッシュが原因で問題が発生する場合があります。通常、フォールトトレランスがあったとしても、接続にアクセスする際に発生する例外に対応するようにアプリケーションをコーディングする必要があります。アプリケーションコンポーネントの接続が使用中に閉じた場合、 アプリケーションは例外を取得して、スレッドスタックを徐々に元に戻す必要があります。通常、これによりクラッシュは発生しません。ただし、例外を処理しているアプリケーションによって、もしくは処理できない場合は、予期せぬ問題が発生する場合があります。したがって、通常、プロダクションシステムではこの全てのフラッシュは推奨されません。 

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.