idle in transaction Oturumları

`idle in transaction` oturumlarının kök nedenini belirleyin. İşlem yaşı ve uygulama kaynağını sürekli takip edin.

2026-09-06 · 2 dakika okuma

Problem neden önemlidir?

idle in transaction durumundaki bir oturum sorgu çalıştırmasa bile açık işlem tutar. Bu durum kilitleri koruyabilir ve ölü satırların temizlenme ufkunu geride bırakabilir.

Nasıl teşhis edilir?

Oturumları xact_start, state_change, uygulama ve istemci bilgileriyle sıralayın. Durumun kısa süreli normal bir düşünme süresi mi yoksa kalıcı uygulama hatası mı olduğunu zaman serisi belirler.

Sorgu yalnızca açık işlem içinde boşta olan oturumları listeler. Görünen metin son sorgudur ve oturumun şu anda onu çalıştırdığı anlamına gelmez.

SELECT pid, usename, application_name, client_addr, xact_start, state_change,
       clock_timestamp() - xact_start AS transaction_age,
       left(query, 200) AS last_query
FROM pg_stat_activity
WHERE state = 'idle in transaction'
ORDER BY xact_start;

Güvenli çözüm yaklaşımı

Uygulamanın işlem sınırlarını düzeltin ve bağlantıların sonuç beklerken açık işlem bırakmamasını sağlayın. Uygun zaman aşımı politikalarını üretim davranışı üzerinde test ederek değerlendirin.

Sürekli monitoring neden gerekir?

moon, bu oturumların yaşını ve tekrarını düşük ek yükle sürekli izlemeye yardımcı olur. Slack, PagerDuty veya webhook yönlendirmesi uygulama sahibinin erken haberdar edilmesini sağlar.

Sık sorulan sorular

idle ile idle in transaction aynı risk midir?

Hayır, sıradan idle oturumu açık bir işlem taşımayabilir. idle in transaction ise işlem kaynaklarını ve MVCC ufkunu etkileyebilir.

moon bu konuda nasıl yardımcı olur?

moon, SQL Server, PostgreSQL ve MongoDB sinyallerini sürekli izleyerek problemi anlık bir kontrolden ziyade zaman içindeki davranışıyla değerlendirmeye yardımcı olur.