MySQL Sunucu Bağlantı Kopması: max_allowed_packet, wait_timeout ve OOM Killer Teşhisi
Büyük BLOB/JSON yüklerinde max_allowed_packet yetersizliği, boşta kalan oturumlarda wait_timeout düşmesi ve Linux OOM Killer müdahalesinin tespiti ve kalıcı çözümü.
Operasyonel Doğrulama & Güvenilirlik Standardı
Hata mesajı semptomdur, kök neden değildir. Sunucuyu yeniden başlatmadan veya rastgele ayar değiştirmeden önce aşağıdaki "Nedeni ayırt eden tek sorgu"yu çalıştırarak gerçek senaryoyu netleştirin.
▸Belirti
Uygulama sorgu çalıştırırken veya veri gönderirken aniden soket kapanır:
ERROR 2006 (HY000): MySQL server has gone away
ERROR 2013 (HY000): Lost connection to MySQL server during query▸Sahada Ne Görürsün?
Büyük bir JSON veya resim dosyası kaydedilirken bağlantı kopar ya da uzun süre işlem yapmayan arka plan işçileri tekrar sorgu gönderdiğinde hata alır.
▸Kök Neden Matrisi
| Olasılık | Kök Neden | Açıklama |
|---|---|---|
| %50 | `max_allowed_packet` Aşımı | İstemcinin gönderdiği SQL sorgusu veya BLOB verisi sunucunun paket boyut limitini (varsayılan 64MB) aşmıştır. Sunucu istemci soketini kapatır. |
| %30 | `wait_timeout` Dolması | İstemci havuzundaki bağlantı uzun süre hareketsiz kalmış ve MySQL bağlantıyı düşürmüştür. |
| %20 | Linux OOM Killer Crash | Sunucu belleği bittiği için işletim sistemi çekirdeği mysqld sürecini öldürmüştür. |
▸ACİL RUNBOOK (0-5dk)
# 1. Sunucu çöktü mü kontrol et (OOM killer tespiti)
dmesg -T | grep -i oom
# 2. MySQL servisinin çalışma süresini (uptime) gör
mysqladmin -u root -p status
# 3. Paket limitini dinamik olarak 256MB'a çıkar
mysql -u root -p -e "SET GLOBAL max_allowed_packet = 256 * 1024 * 1024;"
# 4. Boşta kalma zaman aşımını uzat
mysql -u root -p -e "SET GLOBAL wait_timeout = 600; SET GLOBAL interactive_timeout = 600;"▸KALICI BLUEPRINT
- 1my.cnf Konfigürasyonu:
max_allowed_packet = 256M
wait_timeout = 600
interactive_timeout = 600- 1Havuz Validasyon Sorgusu (Keep-Alive): İstemci havuzunda
validationQuery = "/* ping */ SELECT 1"veyatestOnBorrow = trueaktif edilmelidir. - 2Bellek Bütçesi:
innodb_buffer_pool_sizesistem RAM'inin %70'ini geçmemeli, OOM killer riski sıfırlanmalıdır.
▸Doğrulama
SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet';
SHOW GLOBAL VARIABLES LIKE 'wait_timeout';Diğer Veritabanı Hata Teşhisleri
Kriz anında başvurabileceğiniz diğer doğrulanmış hata rehberleri.
MySQL ERROR 1045 Access denied: root Şifresi Sıfırlama Rehberi
MySQL 1045 hatasının dört nedeni, "using password: YES/NO" ayrımının anlamı ve kilitli kalınca --init-file ile güvenli şifre sıfırlama.
MySQL Deadlock ERROR 1213: Grafiği Okuma ve Kalıcı Önleme
MySQL 1213 deadlock hatasının nedeni, LATEST DETECTED DEADLOCK çıktısını okuma, gap lock kaynaklı kilitlenmeler ve uygulama tarafında retry tasarımı.
MySQL Lock wait timeout exceeded: Bloklayan İşlemi Bulma
1205 lock wait timeout hatasında bloklayan işlemi performance_schema ile bulma, KILL kararını verme ve kilidi kalıcı olarak azaltma yöntemleri.