Features · Monitoring · DB Lock-Wait Monitor
Monitoring · DB Lock-Wait Monitor

CPU stays low.
The page hangs anyway.

A whole class of slowness — row locks, advisory locks, schema-mod locks, lock chains — doesn't spike CPU. The agent polls pg_stat_activity every 5 minutes for sessions stuck in any wait state more than 5 seconds, with the blocking PIDs included.

sessions blocked > 5s
pid 8841 waiting 42s · row lock
pid 8842 waiting 38s · behind 8841
pid 8790 holder · idle in transaction
lock chain 3 deep
cpu at the time 19%
— Why this matters

Lock waits are the slowness your CPU alerts cannot see.

01

Blocked sessions consume nothing.

A query waiting on a row lock burns no CPU and no I/O. Every threshold you have stays green while the application stalls.

02

The holder is usually idle.

The session blocking everything is often idle in transaction — doing nothing, holding everything. You need it named.

03

Chains matter more than pairs.

Three sessions deep, the one at the front is the only one worth killing.

— What's included

What the agent captures.

Polled continuously
pg_stat_activity on Postgres, INNODB_TRX on MySQL.
Per waiter
PID, user, database, the current query, and the wait event type.
The blocking session
Named, so the chain has a head.
Live tab
Current waiters. Empty when nothing is blocked, which is the point.
History tab
Older lock events in the window you choose.
Load context
A ±30-minute sparkline with the moment marked, showing load stayed flat while everything queued.
— How it works

Follow the chain, not the symptom.

1

Poll the wait graph

Waiting sessions are read continuously — they consume no CPU, so nothing else you monitor will surface them.

2

Find the holder

The chain is followed to the session actually holding the lock, which is very often idle in a transaction.

3

Alert on duration

A wait of a few milliseconds is normal operation. A wait measured in seconds is the thing worth a notification.

— Works with

Connected capabilities

— FAQ

Questions, answered honestly.

Threshold? +
5 seconds. Anything waiting less than that probably resolves before you'd care. Configurable agent-side.
How often does the agent poll? +
Every 5 minutes by default — matches the rest of the service-plugin cadence. Chains lasting < 5 min might be missed; chains that matter persist.
MySQL? +
Schema supports MySQL via the engine column. The agent's INNODB_TRX collector is on the next batch.
Can I kill the lock? +
V2 — the kill-query action (pg_cancel_backend / pg_terminate_backend) is on the next round. V1 is read-only.

Catch the lock chain at waiter #3.

DB Lock-Wait Monitor included from Starter. Postgres in V1, MySQL on the next round.

Get early access Back to Monitoring