"Connection Reset by Peer" Nedir?
Bu hatanın ortaya çıkmasının birkaç nedeni olabilir. Bazen bağlantı ağdaki bir problem nedeniyle kesilebilir, bazen de veritabanı sunucusu istemcinin bağlantısını zaman aşımına uğratabilir. Sorun ne olursa olsun, çözüm yoluna gitmek için biraz dikkatli olmanız gerekebilir.
Hata Neden Ortaya Çıkar?
PostgreSQL, belirli bir süre işlem yapılmadığında, istemciden gelen bağlantıyı zaman aşımına uğratabilir. Yani, bağlantı aktif değilse veya uzun süre veri gönderilmezse, sunucu istemcinin bağlantısını kapatır. Bu, "Connection Reset by Peer" hatasına yol açabilir.
# 2. Ağ Problemleri
Eğer sunucu ile istemci arasında ağda bir problem varsa (örneğin, internet bağlantısı zayıfsa), bağlantı kesilebilir. Böyle bir durumda da aynı hata ile karşılaşabilirsiniz.
Bazı durumlarda, sunucunun güvenlik duvarı (firewall) veya bağlantı izleme yazılımları, istemciden gelen bağlantıyı engelleyebilir. Bu da bağlantı sıfırlanmasına sebep olur.
# 4. PostgreSQL Konfigürasyon Ayarları
PostgreSQL sunucusunun bazı yapılandırmaları da bu hatayı tetikleyebilir. Özellikle `tcp_keepalives_idle`, `tcp_keepalives_interval` ve `tcp_keepalives_count` gibi parametreler, bağlantının ne zaman kesileceğini belirler.
# 1. Sunucu ve İstemci Zaman Aşımını Kontrol Edin
PostgreSQL'ün zaman aşımı ayarları, istemci ve sunucu arasında bağlantı sürelerini etkiler. Bu yüzden, her iki tarafın zaman aşımını kontrol etmek önemlidir. İşte kontrol etmeniz gereken PostgreSQL ayarları:
- tcp_keepalives_interval: Hareketsiz bağlantıları ne kadar sıklıkla kontrol edeceğini belirler.
- tcp_keepalives_count: Hareketsiz bağlantılara ne kadar süre daha tolerans gösterileceğini belirler.
Bu ayarları `postgresql.conf` dosyanızda güncelleyebilirsiniz. Aşağıda nasıl yapabileceğinizi gösteren bir örnek:
# PostgreSQL Konfigürasyon Dosyasına Ekleme
tcp_keepalives_idle = 60
tcp_keepalives_interval = 30
tcp_keepalives_count = 5
Bu ayarları ekledikten sonra, PostgreSQL sunucusunu yeniden başlatmayı unutmayın.
# 2. Ağ Bağlantısını Gözden Geçirin
Ağ bağlantınızda herhangi bir sorun olup olmadığını kontrol edin. Eğer bağlantınızda dalgalanmalar veya zayıf sinyaller varsa, bu bağlantı sıfırlama hatasına yol açabilir. Bağlantı problemi varsa, internet servis sağlayıcınızla iletişime geçmeyi düşünebilirsiniz.
Eğer ağda bir güvenlik duvarı (firewall) kullanıyorsanız, bu duvar PostgreSQL bağlantılarını engelliyor olabilir. Sunucunuzun veya istemcinin güvenlik duvarı ayarlarını kontrol edin. PostgreSQL için varsayılan port 5432’dir, bu portun açık olduğundan emin olun.
# 4. Bağlantı Hatasını İzlemek için Log Kayıtlarını İnceleyin
PostgreSQL loglarını incelemek, hatanın nedenini anlamanıza yardımcı olabilir. PostgreSQL logları genellikle `/var/log/postgresql/` dizininde bulunur. Logları kontrol ederek, hatanın detayları hakkında daha fazla bilgi edinebilirsiniz.
Eğer çok fazla istemci bağlantısı açıyorsanız, bu da bağlantı sıfırlamalarına yol açabilir. PostgreSQL’in bağlantı limiti aşıldığında, yeni bağlantılar kabul edilmeyebilir. `max_connections` ayarını artırmak bu sorunu çözebilir. Ancak, çok fazla bağlantı açmak, sunucunun performansını da etkileyebilir, bu yüzden dikkatli olmalısınız.
# PostgreSQL Konfigürasyon Dosyasına Ekleme
max_connections = 200
Bu ayar, PostgreSQL’e aynı anda kaç istemci bağlanabileceğini belirler. Bu parametreyi artırmak, bağlantı sıfırlamalarının önüne geçebilir.
Sonuç
Başarılar!