Symfoware Serverのデッドロックの対処方法について

アプリケーション実行中に「JYP2099E デッドロックが発生しました」のエラーが発生します。原因と対処方法を教えてください。
[メッセージの意味]
デッドロックが発生しました。

[原因]
複数のトランザクションが同時に実行されているとき、互いにほかのトランザクションが占有している資源の占有待ちになってしまうことがあります。この状態をデッドロックと呼びます。Symfoware Serverは自動的にデッドロックを検知して、トランザクションを強制的にロールバックさせ、デッドロックを解消します。その際、JYP2099Eのメッセージが出力されます。

[対処方法]
アプリケーションはデッドロックの発生時にトランザクションのリトライを行うなどの処理を行ってください。
デッドロックを発生しにくくするためには、アプリケーションで資源を占有する順番を統一するなどの対処を行ってください。
排他の属性を変更可能な場合は、以下のいずれかで排他の属性を変更してください。

  • 動作環境パラメタUSQL_LOCKにEXを指定してください。

  • 独立性水準にREAD UNCOMMITTED、または占有モードにNO LOCKを指定してください。


詳細は以下のマニュアルを参照してください。

 Symfoware Server V10.0.1 アプリケーション開発ガイド(共通編)
  第1章 アプリケーションの設計に必要な概念
   1.1 トランザクションと排他制御
    1.1.7 排他制御
    1.1.10 デッドロックの対処方法

 Symfoware Server V10.0.1 チューニングガイド
  第4章 チューニング
   4.7 その他のチューニング
    4.7.2 トランザクション占有のチューニング

なお、上記以外の製品バージョン/レベルについては、該当するマニュアル箇所を参照してください。

製品・サービス区分 Symfoware
製品・サービス情報
対象製品 Symfoware Server (Native Interface)
プラットフォーム Windows, Solaris, Linux
アンサー種別 技術サポート
このページの先頭へ