Korzystam z aplikacji rozruchu wiosennego z dokiem roju i używam postgres do bazy danych. Po uruchomieniu obu z nich jako usługi dokowania połączenie z bazą danych nie jest spójne i losowe (jak widać na znaczniku czasu), ponieważ dziennik mówi:
2017-10-26T 17:14:15 .200415747Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: nie można odebrać danych od klienta: połączenie zresetowane przez peer
2017-10-26T 17:43:36 .481718562Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: nie można odebrać danych od klienta: resetowanie połączenia przez peer
2017-10-26T 17:43:56 .954152654Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: nie można odebrać danych od klienta: połączenie zresetowane przez peer
2017-10-26T 17:44:17 .434171472Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: nie można odebrać danych od klienta: połączenie zresetowane przez peer
2017-10-26T 17:49:04 .154174253Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: nie można odebrać danych od klienta: połączenie zresetowane przez peer
Nie mogłem zrozumieć ani odkryć przyczyny tego. Byłbym wdzięczny za wszelkie pomysły.
edytować:
zdaliśmy sobie sprawę, że podczas testowania aplikacji zgłasza również następujący błąd:
SQLTransientConnectionException: HikariPool-1 - Połączenie nie jest dostępne, żądanie przekroczyło limit czasu po 937517ms
Dzięki.
źródło
tcp_keepalive_time
po hoście (źródło: success.docker.com/article/ipvs-connection-timeout-issue ), więc to podejście nie będzie działać z nowszymi kontenerami. Jednak od Docker 19.03 istniejesysctl
opcja, która może być dostarczana do usług (np. W pliku tworzenia). Można tego użyć do ustawienia powyższych flag bezpośrednio w kontenerach, bez bałagania z hostem. docs.docker.com/compose/compose-file/#sysctlsIstnieje inny sposób, aby zapobiec zamknięciu bezczynnego połączenia. Problem związany jest z domyślnym wykrywaniem usługi roju, która zamyka bezczynne połączenie po 15 minutach.
Wyraźny określony,
dnsrr
tryb końcowym rozwiązuje ten problem, na przykład:źródło