🚀 Linux ve Windows sunucularda yeni müşterilere özel %20 indirim! Kod: ILK20  |  Hemen sipariş ver →
build Hata Çözümleri & Otomasyon

MySQL Server Has Gone Away (Error 2006) Çözümü

MySQL Error 2006 hatası genellikle bağlantı zaman aşımı veya büyük sorgulardan kaynaklanır. Bu yazıda sorunu adım adım çözmek için gerekli ayarları ve pratik ipuçlarını bulabilirsiniz.

person
Editör
(Güncellendi: 28 Tem 2026) schedule 4 dk okuma visibility 6 görüntülenme

MySQL kullanırken karşılaşabileceğiniz en sinir bozucu hatalardan biri şüphesiz MySQL Server Has Gone Away (Error 2006) mesajıdır. Özellikle büyük veritabanları, uzun süren sorgular veya yoğun trafik altında çalışan web sitelerinde sıkça görülür. Peki bu hatanın altında yatan nedenler nelerdir ve nasıl kalıcı olarak çözebiliriz? Gelin birlikte inceleyelim.

Hatanın Yaygın Nedenleri

Error 2006, MySQL sunucusunun istemci bağlantısını beklenmedik bir şekilde sonlandırmasıyla ortaya çıkar. En yaygın nedenler şunlardır:

  • wait_timeout veya interactive_timeout değerlerinin düşük olması: Varsayılan ayarlar genelde 28800 saniye (8 saat) olsa da bazı paylaşımlı hostinglerde bu süre 60 saniyeye kadar düşebilir.
  • max_allowed_packet değerinin küçük olması: Büyük veri içeren sorgular (örneğin BLOB veya TEXT alanları) bu sınırı aşarsa bağlantı kopar. Varsayılan 4 MB veya 16 MB olabilir, ancak 100 MB'lık bir dosya yüklemeye çalışıyorsanız bu yeterli olmayacaktır.
  • Sunucu kaynaklarının yetersizliği: Aşırı yüklenmiş bir MySQL sunucusu, bağlantıları zamanından önce kapatabilir.
  • Ağ kesintileri veya güvenlik duvarı ayarları: Özellikle uzaktaki bir veritabanı sunucusuna bağlanırken ara bağlantılarda kopmalar yaşanabilir.

Adım Adım Çözüm Yöntemleri

1. MySQL Konfigürasyon Dosyasını Düzenleyin

Öncelikle my.cnf (Linux) veya my.ini (Windows) dosyasını bulun. Genellikle /etc/mysql/my.cnf veya /etc/my.cnf altındadır. Aşağıdaki parametreleri kontrol edin ve ihtiyaca göre artırın:

[mysqld] wait_timeout = 600 interactive_timeout = 600 max_allowed_packet = 64M

Not: 600 saniye (10 dakika) çoğu uygulama için yeterlidir. Eğer cron job gibi uzun süreli işlemler yapıyorsanız bu süreyi 3600’e (1 saat) çıkarabilirsiniz. max_allowed_packet değerini ise taşıyacağınız en büyük veri boyutuna göre belirleyin. Örneğin 100 MB’lık bir dosya için 128M idealdir.

2. PHP Ayarlarını Kontrol Edin

Eğer PHP ile bağlantı yapıyorsanız (örneğin WordPress), php.ini dosyasında da benzer ayarları yapmanız gerekebilir:

mysql.connect_timeout = 60 default_socket_timeout = 60

Ayrıca PDO::ATTR_TIMEOUT gibi bağlantı seçeneklerini de gözden geçirin.

3. Büyük Veri İşlemleri İçin Sorguları Bölün

Tek bir sorguda çok büyük veri çekmek yerine LIMIT kullanarak parçalayın. Örneğin 1 milyon satırı tek seferde çekmek yerine 1000’er satırlık gruplar halinde işleyin. Bu hem timeout riskini azaltır hem de sunucu yükünü dengeler.

4. Bağlantı Havuzu Kullanın

Özellikle yüksek trafikli sitelerde her istekte yeni bağlantı açmak yerine persistent connections (kalıcı bağlantı) veya bir bağlantı havuzu kullanmayı düşünün. MySQL’in mysql_pconnect fonksiyonu veya PHP’de PDO’nun PDO::ATTR_PERSISTENT seçeneği bu işe yarar.

5. Sunucu Kaynaklarını İzleyin

MySQL sunucunuzun aşırı yük altında olup olmadığını kontrol edin. SHOW PROCESSLIST; komutuyla aktif bağlantıları görebilirsiniz. Çok fazla “Sleep” durumunda bağlantı varsa wait_timeout’u düşürmek veya bağlantıları temizlemek faydalı olabilir.

Gelişmiş Çözümler: Log Analizi ve İzleme

Eğer yukarıdaki adımlar sorunu çözmezse MySQL’in hata loglarını inceleyin. Loglar genelde /var/log/mysql/error.log altındadır. Ayrıca slow_query_log’u etkinleştirerek yavaş sorguları tespit edebilir ve optimize edebilirsiniz. Unutmayın, bazen sorun sunucunuzun donanım kaynaklarından (RAM, CPU) kaynaklanıyor olabilir; bu durumda sunucu yükseltmesi veya VDS’ye geçiş düşünülebilir.

Önemli: Değişikliklerden sonra MySQL servisini yeniden başlatmayı unutmayın (systemctl restart mysql veya service mysql restart). Ayrıca web sunucusunu ve PHP-FPM’i de restart etmek gerekebilir.

Sonuç

MySQL Error 2006, doğru yapılandırma ve biraz dikkatle kolayca çözülebilir. Öncelikle wait_timeout ve max_allowed_packet ayarlarını kontrol edin; çoğu vaka bu iki parametrenin optimize edilmesiyle düzelir. Daha karmaşık durumlarda sorgu optimizasyonu ve sunucu kaynak yönetimine yönelin. HostingServer.com.tr olarak, bu tür hatalarla karşılaştığınızda size destek olmak için buradayız. Sorularınızı yorumlarda paylaşmayı unutmayın!

Bu Makaleyi Paylaş

İlgili Yazılar