Monitor database deadlocks on two or more different transactions waiting for the same database lock

When the number of events is large, the Monitor database deadlocks on two or more different transactions waiting for the same database lock. When this happens, one of the transactions fails and is retried as specified by the model version property "Maximum number of event processing failures." After the configurable number of retries fail due to deadlocks, the event and all events that follow that are related to the same instance are sent to the error queue.

About this task

When a monitor model is run with the multi-threaded event processing strategy, monitoring context instances can be updated concurrently by different Business Monitor server threads. This concurrency improves performance but also raises the risk of a database deadlock because there are multiple threads competing for the same database resources.

To resolve the problem, resubmit the failed event for processing by completing the following steps:

Procedure

  1. In the WebSphere® Application Server administrative console, click Troubleshooting > Monitor Models > Failed Event Sequences.
  2. Click the number under Failed Instances of the monitor model whose failed events you want to resubmit.
  3. Click the number under Failed Events of the instance whose failed events you want to resubmit.
  4. Select the event you want to resubmit.
  5. Click Resubmit.
  6. Click OK.

Eliminating future deadlocks

About this task

To eliminate future deadlocks, reduce the number of event processing threads to one per monitor model version by completing the following steps:

Procedure

  1. In the WebSphere Application Server administrative console, click Resources > Asynchronous beans > Work managers.
  2. Click wbm_modelid_modelversion_FragmentProcessing.
  3. Change Maximum number of threads to 1. The default value for "Maximum number of threads" is 1.
  4. Click OK.

Eliminating future deadlocks on DB2 Database for Linux, UNIX, and Windows

About this task

To eliminate future deadlocks on DB2® Database for Linux, UNIX, and Windows while maintaining concurrent processing, enter the following in the DB2 command window:
db2set DB2_SKIPINSERTED=ON
db2set DB2_SKIPDELETED =ON

Multiple threads will not deadlock when the DB2 instance registry variables DB2_SKIPINSERTED and DB2_SKIPDELETED are set to 'ON'.