dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Home/Hata Teşhis Kütüphanesi/mysql-2006-server-has-gone-away
MySQL
MySQL 8.0 - 8.4Bağlantı & Paket
6 dk okuma
ERROR 2006 (HY000): MySQL server has gone away / ERROR 2013: Lost connection

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ü.

İnceleyen:Kıdemli Veritabanı Mimarı & SRE (dataiotech Labs)
Test Edilen Sürümler: MySQL 8.0 / 8.4 LTS / 9.0

Operasyonel Doğrulama & Güvenilirlik Standardı

Son Teknik İnceleme: 2 Kasım 2026
Test Edilen SürümlerMySQL 8.0.36, 8.4.1 LTS
Gerekli Yetkiİşletim sistemi dmesg okuma ve MySQL SUPERUSER
Risk Seviyesi
Highmysqld process'inin OOM killer ile çökmesi aktif transaction'larda veri kaybı ve crash recovery gerektirir
Beklenen Çıktımax_allowed_packet değerinin 256MB'a çıkarılması ve dmesg'de OOM crash olmaması
Geri Dönüş (Rollback) Planı:max_allowed_packet ve wait_timeout değerlerini eski konfigürasyona alma
MySQL Docs: MySQL server has gone away
İlk 60 Saniye Teşhis Protokolü:

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:

plaintext
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ıkKök NedenAçı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.
%20Linux OOM Killer CrashSunucu belleği bittiği için işletim sistemi çekirdeği mysqld sürecini öldürmüştür.

▸ACİL RUNBOOK (0-5dk)

bash
# 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

  1. 1my.cnf Konfigürasyonu:
ini
max_allowed_packet = 256M wait_timeout = 600 interactive_timeout = 600
  1. 1Havuz Validasyon Sorgusu (Keep-Alive): İstemci havuzunda validationQuery = "/* ping */ SELECT 1" veya testOnBorrow = true aktif edilmelidir.
  2. 2Bellek Bütçesi: innodb_buffer_pool_size sistem RAM'inin %70'ini geçmemeli, OOM killer riski sıfırlanmalıdır.

▸Doğrulama

sql
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.

Tüm Hatalar (82)