‘Connection Reset by Peer’ Hatası Nedir?
Bu hata, genellikle bir bağlantının karşı taraf (peer) tarafından beklenmedik bir şekilde sıfırlanması nedeniyle meydana gelir. Yani, PostgreSQL sunucusuyla bağlantı kurmak isteyen istemci (uygulama veya servis) bağlantıyı kurmaya çalıştığında, sunucu aniden bağlantıyı kapatır ve istemci "Connection Reset by Peer" hatası alır.
Ne demek bu? Bu, basitçe şu anlama gelir: Uygulamanız veya veritabanınız bir anda iletişimi kesmiştir. Sunucu, istemciyi tanımamış olabilir veya istemci, sunucuya gereksiz yere fazla yük bindirmiş olabilir.
Peki, bu hata nasıl çözülür? Hadi bunu birlikte keşfedelim.
1. Bağlantı Zaman Aşımını Kontrol Edin
İlk adımda, bağlantı sürekliliği için bağlantı zaman aşımını kontrol etmek gerekiyor. Eğer bağlantınız zaman aşımına uğruyorsa, istemci veya sunucu bu bağlantıyı sıfırlayabilir. Bunun çözümü için, PostgreSQL'deki tcp_keepalives_idle ayarını kontrol edebilirsiniz.
Bu parametre, bağlantı için zaman aşımını belirler. Eğer istemci ya da sunucu uzun süre veri alıp vermezse, bağlantı sıfırlanabilir. Bu durumda, bu değeri arttırarak zaman aşımını önleyebilirsiniz.
Aşağıda, PostgreSQL'le bu ayarı nasıl değiştirebileceğinize dair örnek bir kod bulabilirsiniz:
# PostgreSQL ayarlarını düzenlemek için aşağıdaki komutları kullanabilirsiniz:
ALTER SYSTEM SET tcp_keepalives_idle TO '60'; -- 60 saniye süreyle bağlantı sabit tutulur
2. Ağ Bağlantısını Kontrol Edin
Bağlantınızda bir problem varsa, sunucu ile istemci arasındaki ağ iletişimini kontrol etmek önemlidir. Eğer ağda herhangi bir kesinti veya yavaşlık varsa, PostgreSQL bağlantıyı sıfırlayabilir. Bu durumda, ağ donanımınızı kontrol etmek ve bağlantı stabilitesini sağlamak gereklidir.
Bazı durumlarda, istemci cihazın ağını (Wi-Fi vs) değiştirmek de sorunu çözebilir.
3. PostgreSQL Loglarını İnceleyin
PostgreSQL’in log dosyaları, bu tür hataları anlamak ve çözmek için çok değerli bilgiler sunar. Veritabanı loglarını incelemek, hatanın kökenini bulmanıza yardımcı olabilir. Eğer “Connection Reset by Peer” hatası alıyorsanız, loglarda "connection reset" veya "aborted connection" gibi mesajlar arayın.
# PostgreSQL log dosyalarına erişmek için aşağıdaki yolu izleyebilirsiniz:
tail -f /var/log/postgresql/postgresql-12-main.log
Loglarda bağlantı hatasıyla ilgili herhangi bir bilgi bulduğunuzda, hatanın nereden kaynaklandığını anlayabilir ve çözüm yolu geliştirebilirsiniz.
4. PostgreSQL Sunucusunu Yeniden Başlatın
Bazen sunucudaki yazılım hataları ya da aşırı yüklenmeden dolayı bağlantı sıfırlanabilir. Bu durumda, PostgreSQL sunucusunun yeniden başlatılması gerekebilir. Sunucuyu yeniden başlatmak, geçici yazılım hatalarını temizleyebilir ve bağlantı sorunlarını çözebilir.
PostgreSQL sunucusunu yeniden başlatmak için şu komutları kullanabilirsiniz:
# Sunucuyu yeniden başlatmak için şu komutu çalıştırabilirsiniz:
sudo systemctl restart postgresql
5. PostgreSQL Bağlantı Ayarlarını Yapılandırın
Eğer bağlantı hatası sürekli hale geliyorsa, PostgreSQL bağlantı ayarlarını yapılandırmak faydalı olabilir. PostgreSQL’in bağlantı havuzunu yönetmek, aşırı yüklenmeleri ve bağlantı sıfırlanma durumlarını engellemeye yardımcı olabilir.
Örneğin, bağlantı havuzunu yönetmek için pgbouncer gibi araçlar kullanabilirsiniz. Bu tür araçlar, veritabanı sunucusunun üzerindeki yükü dengelemeye yardımcı olur ve bağlantı sıfırlanması gibi problemleri en aza indirir.
Sonuç
"Connection Reset by Peer" hatası, PostgreSQL kullanıcıları için oldukça yaygın ve can sıkıcı bir sorun olabilir. Ancak, yukarıda bahsettiğimiz adımları takip ederek, bu hatayı çözmeniz mümkün olacaktır. Bağlantı ayarlarını yapılandırmak, ağınızı kontrol etmek ve logları incelemek, çözüm bulmanıza yardımcı olacaktır.
Unutmayın, sabırlı olun ve her bir adımı dikkatlice uygulayın. Veritabanı hatalarının çoğu zaman çözümü vardır. Sadece doğru stratejiyle yaklaşmak gerekir.