İçeriğe geç

Veritabanı kilit yığılması

Sağlıklı web sunucuları, dikleşen bir gecikme eğrisi ve birbirini bekleyen sorgular.

Son güncelleme:

Örüntü eşlemeyi cezalandıran olay. Raftaki her şey iyi görünür, trafik barı normaldir ve gece yine de dağılmaktadır.

Ne yapar

Bir veritabanı makinesindeki sorgular tamamlanmak yerine kilitleri beklemeye başlar. Hiçbir şey çökmez, hiçbir makine doygunluğa gitmez — ama istekler veritabanının arkasında kuyruğa girer, gecikme tırmanır ve uptime onu izler.

Web katmanı baştan sona sağlıklıdır. Bu olayın karakterinin tamamı bu: belirti filo genelinde yavaşlık, sebep ise asla kızarmayan tek bir makine.

Log imzası

Sorgu kimlikleri, onlarca saniyelik bekleme süreleri ve bir işlem adıyla birlikte LOCK WAIT ifadesi:

04:03:11 [db-01] yavaş sorgu #9412: 34000ms — LOCK WAIT (checkout_tx)
04:03:40 [db-01] bağlantıların %62'si kilit bekliyor
04:04:02 ortalama gecikme 2100ms — hedefin üstünde

db_stat aktif sorguları kimlik, bekleme süresi ve adla listeler ve kilitte takılı olanları işaretler. Bunun içini görebilen tek komut odur; olayı doğrulamanın ya da elemenin en hızlı yolu da bu.

Dokunmazsan

Kilit kuyruğu büyür ve gecikme vardiyanın geri kalanında yüksek kalır. Hiçbir makine DOWN düşmediği için uptime kaybı tamamen gecikmeden ve ardından SLA borcundan gelir. Rafın tamamı yeşilken bu yüzden gece kaybetmek mümkündür.

Ayırt etme

BenzeyenAyıran
DDoS seliİkisi de gecikmeyi yükseltir. Sel ayrıca bant genişliği barını ve web makinelerinde CPU'yu yükseltir; kilit yığılması ikisini de yükseltmez.
Kaçak görevİkisi de bir veritabanı makinesini ilgilendirebilir, ama kaçak görev CPU'yu kilitler ve bir süreç adlandırır; bu, sorgu adlandırır.

Ne zaman çıkar

En erken gece3
Gerektirirbir db makinesi
Ağırlık80
Aynı andatek örnek

Olayı gerçek bir uptime bedeliyle kapatan kısmi bir çıkış yolu da var — kapanış log satırı onu temiz olandan ayırır.