Saya menjalankan aplikasi spring boot dengan buruh pelabuhan dan saya menggunakan postgres untuk database. Ketika saya menjalankan keduanya sebagai layanan buruh pelabuhan, koneksi basis data gagal secara konsisten dan acak (seperti yang Anda lihat di stempel waktu) seperti yang dikatakan oleh log:
2017-10-26T 17:14:15 .200415747Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: tidak dapat menerima data dari klien: Koneksi diatur ulang oleh rekan
2017-10-26T 17:43:36 .481718562Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: tidak dapat menerima data dari klien: Koneksi diatur ulang oleh rekan
2017-10-26T 17:43:56 .954152654Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: tidak dapat menerima data dari klien: Koneksi diatur ulang oleh rekan
2017-10-26T 17:44:17 .434171472Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: tidak dapat menerima data dari klien: Koneksi diatur ulang oleh rekan
2017-10-26T 17:49:04 .154174253Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: tidak dapat menerima data dari klien: Koneksi diatur ulang oleh rekan
Saya tidak bisa mengerti atau menemukan alasan untuk ini. Saya menghargai ide apa pun.
edit:
kami menyadari bahwa, saat menguji aplikasi, ia juga menampilkan kesalahan seperti ini:
SQLTransientConnectionException: HikariPool-1 - Koneksi tidak tersedia, permintaan habis setelah 937517ms
Terima kasih.
sumber
tcp_keepalive_time
dari host (sumber: success.docker.com/article/ipvs-connection-timeout-issue ), sehingga pendekatan ini tidak lagi berfungsi dengan wadah yang lebih baru. Namun, pada Docker 19.03 adasysctl
opsi yang dapat disediakan untuk layanan (misalnya dalam file penulisan). Ini dapat digunakan untuk mengatur bendera di atas secara langsung dalam wadah tanpa mengacaukan tuan rumah. docs.docker.com/compose/compose-file/#sysctlsAda cara lain untuk mencegah penutupan koneksi idle. Masalahnya terkait dengan penemuan layanan swarm standar yang menutup koneksi idle setelah 15 menit.
Secara eksplisit menentukan
dnsrr
mode titik akhir menyelesaikan masalah, misalnya:sumber