MySQL Server Has Gone Away

Mysql server has gone away

MySQL Server Has Gone Away” hatası ama biz ona MySQL atta gitti diyoruz 🙂

Muhtemelen sürüm güncellemesi (PHP, MySQL) sonucunda üzerinde büyük data bulunduran sorguların sonucunda oluşan bir hatadır kendileri. Bir sorgunun uzun sürmesi sonucu MySQL sunucusu ile irtibat kesilir ve sorgunuz işleme girmez.

Böyle bir hata ile karşılaştığınızda ilk kontrol etmeniz gereken wait_timeout değişkenidir. Bu değişkende belirtilen değer kadar bir işlem için beklenecektir. Birimi saniye cinsindendir

Bu diğişkenin değerini görmek için bu komutu kullanabilirsiniz:

SHOW SESSION VARIABLES LIKE ‘%timeout%’.;

 

aldığınız hataya ilişkin değeri çok düşük olabilir. Aşağıdaki komut vasıtasıyla değerini artırabilirsiniz

SET SESSION wait_timeout = 60;

 

Buna rağmen aynı hatayı almayı devam ediyorsanız MySQL sunucusuna bağlanırken kullandığınız soketlerin timeoutlarını kontrol etmelisiniz. Ben bu problem ile PHP’ de karşılaştım ve onun üzerinden yapacağım. Tek yapmanız gereken PHP.ini dosyasındaki;

mysql.connect_timeout = 300
default_socket_timeout = 300

bu değerleri değiştirmek.

 

optimum değeri bulana kadar değerleri değiştirebilirsiniz. PHP.ini dosyasına erişiminiz yok ise init_set fonksiyonu ile işinizi halledebilirsiniz

ini_set(‘mysql.connect_timeout’, 300);
ini_set(‘default_socket_timeout’, 300);

 

Umarım en son bu ayarlarıda yaptığınızda probleminiz çözülmüş olur.

Burada uyarmak istediğim başka bir konu ise; timeout sürelerine çok yüksek değerler vermek update lock koyduğunuz kayıtlarda problem çıkarabiliyor.

Update için herhangi bir engeli bulunmayan bir kayıt üzerinde timeouttan dolayı işlem yapamayabiliyorsunuz. Onun için timeout değerlerini dikkatli bir şekilde arttırmak gerekir. Yoksa veri kayıpları yaşayabilirsiniz.

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.