Herkese Merhabalar,
Hatalar programlama sürecinin doğal bir parçasıdır. Ancak zamanımızın çok değerli olduğunu unutmadan, hata çıktısını hızlı ve etkili bir şekilde çözmek için bazı yollar var. Google, Stackoverflow gibi kaynakları kullanarak örnekleri incelemeye başlayabilir veya debugging araçlarını kullanarak hata nedenini takip edebilirsiniz. Bu makalede, hata çıktısını bulmanın en etkili yollarından bahsedeceğiz.
Ara sıra çok basit düşünmek zorunda kalabiliriz. RabbitMQ ve MySQL sunucusunun gitmiş olduğu hatası birden fazla nedeni olabilir. Bunlardan biri bağlantının yaşayamamasıdır. Bu durumda, 3 farklı çözüme gidebiliriz.
- Mysql wait_timeout
Bu değer varsayılan olarak 28800 saniye olarak gelir, yani 8 saate eşittir. Bu bağlantının bu süre boyunca yaşayacağı anlamına gelir ve gelen istekler için hazır olacaktır. - Bağlantı dizesi kapat ve aç
Bu yöntemle, bağlantıyı sürekli yaşatmazız, ancak her istek için yeni bir bağlantı dizesi oluştururuz ve işin sonunda bu dizgeyi öldürürüz ve yeni bir bağlantı dizesiyle bağlantıyı yeniden kurarız. - Mysqli::ping
Eğer wait_timeout değerini arttırarak bağlantıyı uzun süre yaşatamıyorsak, bu yöntemle belirli aralıklarla istekler göndererek bağlantıyı yaşatabiliriz.
Yukarıda bahsedilen yöntemler genellikle olumlu olarak kabul edilir, ancak bu yöntemlerin de olumsuz yönleri vardır.
- Mysql wait_timeout
Bu yöntemin olumsuz yanı, bağlantıları arka arkaya açıp kapatmadığınız durumlarda Mysql'in çok fazla bağlantı dizgesi oluşturmasına neden olarak bu tarz bir hata ile karşılaşmanıza sebep olabilir.
"User has already more than 'max_user_connections' active connections" or "Warning: mysql_connect(): Too many connections in /home/www/... "
- Bağlantı dizesi kapat ve aç
Bu yöntemi kullandığınızda, her istek için veritabanı bağlantısını açıp kapatacaksınız. Bu yöntemin avantajı "Toplu Ekleme" durumlarında ortaya çıkar. Satır satır ekleme durumlarında zaman ve kaynak maliyetleri mevcut olacaktır. - mysqli::ping
mysqli.reconnect global seçeneği etkinleştirilmemişse, bağlantı kaybedildiğinde Mysqli::ping yeniden bağlanmayacaktır.
Sonuç olarak, bu yöntemlerin her biri kendi avantajları ve dezavantajları olsa da, duruma göre en uygun yöntemin seçilmesi gerekir.
Comments