İçeriğe geç

Veritabanı kilit yığılması

SysAdmin Crisis'te veritabanı kilit yığılması: web sunucuları sağlıklı görünür, gecikme ise tırmanır. Log imzasını ve diğer olaylardan farkını öğren.

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ı

Veritabanı makinesinin PostgreSQL günlüğünde bekleme ve süre satırları, kenarda ise yalnızca gecikme uyarısı görünür:

04:03:11 db-01 postgres[1187]: [2210] LOG:  process 2210 still waiting for ShareLock on transaction 48212 after 1000.051 ms
04:03:11 db-01 postgres[1187]: [2210] DETAIL:  Process holding the lock: 2207. Wait queue: 2210.
04:03:40 web-01 monit[598]: 'shop-api' failed protocol test [HTTP] at [localhost]:80/healthz [TCP/IP] -- HTTP: response time 2100 ms exceeds 1000 ms
04:04:12 db-01 postgres[1187]: [1187] FATAL:  remaining connection slots are reserved for non-replication superuser connections

Kilidi tutan oturum yalnızca süresini yazar; bekleyenler ise kimi beklediklerini söyler. Zinciri sondan başa yürüyerek kökü bulursun. db_stat aktif sorguları kimlik, bekleme süresi ve adla listeler ve kilitte takılı olanları işaretler.

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 web makinelerinde CPU'yu yükseltir ve kernel'den SYN uyarıları getirir; kilit yığılması ikisini de getirmez.
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 kapanabilir; kapanış satırı bunu temiz kapanıştan ayırır.