PostgreSQL Long and Idle-in-Transaction Sessions
Diagnoses open transactions by age, owner, locks and xmin, and safely resolves sessions blocking vacuum.
Operational Safety & Risk Notice
This runbook contains operational intervention steps; several are write-impacting (KILL, terminate, DROP, RESIZE). Verify in a staging environment first, and apply sequentially in production with verification.
1. Symptom & Signals
- M7 en eski transaction yaşı > 5 dakika; oturumlar `idle in transaction` durumunda saatlerce kalır.
- Dead tuple artışı, kilit beklemeleri veya WAL tutulması aynı dönemde yükselir.
2. Business & Technical Impact
MVCC temizliği gecikir, bloat ve XID riski büyür. Oturum kilit tutuyorsa diğer sorguları bloklar. Her uzun transaction aynı ölçüde sorun yaratmaz; `backend_xmin` ve kilit durumunu doğrulayın.
3. Diagnosis & Root-Cause Analysis
SELECT pid, usename, application_name, client_addr, state,
now() - xact_start AS xact_age, backend_xmin,
wait_event_type, wait_event, left(query, 180) AS last_query
FROM pg_stat_activity
WHERE xact_start IS NOT NULL AND pid <> pg_backend_pid()
ORDER BY xact_start;SELECT gid, prepared, owner, database FROM pg_prepared_xacts ORDER BY prepared;
SELECT slot_name, xmin, catalog_xmin FROM pg_replication_slots;4. Remediation & Action Plan
SELECT pg_cancel_backend(12345); -- yalnızca active sorgu içinSELECT pg_terminate_backend(12345); -- PID'i yeniden doğrulayınALTER ROLE uygulama_rolu SET idle_in_transaction_session_timeout = '5min';PG 9.6+; iş yüküne uygun değer seçin. PG 14+ `idle_session_timeout` **yalnızca** transaction dışı idle oturumlar içindir.
5. Verification & Health Checks
- M7 düşüyor; aynı rol/uygulama kaynaklı uzun transaction tekrarlamıyor.
- S2 bloklayıcı zinciri boş, vacuum yeniden ilerliyor; uygulamada başarısız transaction sayısı yükselmiyor.
6. Rollback & Contingency Plan
- Sonlandırılan transaction geri döndürülemez; uygulamada yeniden başlatılmalıdır.
- Timeout değişikliğini `ALTER ROLE uygulama_rolu RESET idle_in_transaction_session_timeout;` ile kaldırın; mevcut oturumlarda etkin ayar ayrıca kontrol edilmelidir.