catch-img

enq: DX – contention - 日本エクセム株式会社 Oracle待機イベント情報


目次[非表示]

  1. 1.基本情報
    1. 1.1.Tightly-Coupled Integration
    2. 1.2.Loosely-Coupled Integration
  2. 2.待機パラメータと待機時間
    1. 2.1.待機パラメータ
    2. 2.2.待機時間
  3. 3.チェックポイントとソリューション
    1. 3.1.DXロック競合を減らす
  4. 4.豆知識
  5. 5.分析例
    1. 5.1.DX Enqueue競合現象

基本情報

 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待機イベントです。

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

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


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

CONTACT

他社に頼らず自社でデータベースを監視・運用をしませんか?
MaxGaugeがサポートします

お役立ち資料は
こちらから

不明点がある方は、
こちらからお問い合わせください

お電話でのお問い合わせはこちら

平日 10時~18時

人気記事ランキング

タグ一覧