Enq: DX – contention

基本情報

 

DXロックはDistributed Transactionを保護するロックです。 ウェブアプリケーションシステムでWAS(Webアプリケーション・サーバー)のようなミドルウェアの設定がtightly coupledに設定されている場合、Oracleのセッションに接続してトランザクションを実行するとき、Oracleのdba_pending_transactionsビューにDX Lockをかけトランザクションを実行します。この時、トランザクションが遅延されると、DX Lockが発生することがあります。

Tightly-Coupled Integration

セッションの複数の要求を一つのTransactionが担当することにして処理する設定です。

M:1 Transaction処理方式であるため、Distributeトランザクションが発生し、DXロック誘発されます。

Loosely-Coupled Integration

セッションの一つのリクエストに1つのTransactionが担当して処理するための設定です。

1:1 Transaction処理方式であり、DXロック誘発されません。

パラメータと待機時間

待機パラメータ

P1:Enqueue情報(name| mode)
P2:transaction entry#
P3:0

 

待機時間

enqueue待機イベントと同一です。最大3秒まで待ちます。もしDXロックを獲得する場合獲得するまで待機します。

 

チェックポイントとソリューション

 

DXロック競合を減らす

1.ミドルウェアloosly coupledに設定変更します。

2. DX Lockを誘発させたSessionのプログラムの実行を停止。

3. DX Lock Sessionを強制的にKillする。

4.プログラムが同じGroupに属するようにしてDistribute Transactionを防止します。(詳細は、ミドルウェアエンジニア側にお問い合わせください)

イベントチップス

報告されたOracle Bug:TuxedoからDX enqueue発生Bug

1.TUXEDO SERVER PROCESS SPINS HOLDING TRANSACTION BRANCH ALLOCATION LATCH (Bug4627203)

分析例

 

DX Enqueue競合現象

問題になった時点で、大量のLock待機現象によりActive Sessionの数が増加してDB Hangが発生しました。大量のLock待機現象はenq:DX – contentionとenq:TX – row lock contention待機イベントです。

5_3_1

Active session増加推移とlock waiting sessionの増加推移が似たような推移で増加減少しています。 問題が発生した時点のLock Treeを確認した結果Enq:DX – contentionを待機するセッションが多数現れています。

5_3_2

Active Sessionの数値が最高区間のLock Tree状況を確認してみると、DXロック発生とTXロックも多数発生しています。全体的に、トランザクションが遅延していることを知ることができます。

この分析例では、問題の分析、インスタンスの前段のWASがtightly coupledに設定されて問題が発生したことが確認されており、ミドルウェアの設定をLoosely-Coupledに変更した後、その競合現象は発生していませんでした。