L
o
a
d
i
n
g
.
.
.

ホーム

お知らせ

製品・ソリューション

サービス

導入事例・パートナー

EXEM Academy・ブログ

会社情報

採用情報

2018.10.24

Enq: DX – contention

目次

  • 1. 基本情報
  • 2. パラメータと待機時間
  • 3. チェックポイントとソリューション
  • 4. イベントチップス
  • 5. 分析例
    •  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待機イベントです。

      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に変更した後、その競合現象は発生していませんでした。