Estou executando um aplicativo de inicialização com o docker swarm e uso o postgres no banco de dados. Quando executo os dois como serviço docker, a conexão com o banco de dados falha de forma consistente e aleatória (como você pode ver no carimbo de data / hora), conforme o log diz:
2017-10-26T 17:14:15 .200415747Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: não foi possível receber dados do cliente: redefinição de conexão por ponto
2017-10-26T 17:43:36 .481718562Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: não foi possível receber dados do cliente: redefinição de conexão por ponto
2017-10-26T 17:43:56 .954152654Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: não foi possível receber dados do cliente: redefinição de conexão por ponto
2017-10-26T 17:44:17 .434171472Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: não foi possível receber dados do cliente: redefinição de conexão por ponto
2017-10-26T 17:49:04 .154174253Z app-db.1.1ayo6h8ro1og@scw-c2964a | LOG: não foi possível receber dados do cliente: redefinição de conexão por ponto
Eu não conseguia entender ou descobrir o motivo disso. Eu apreciaria todas as idéias.
editar:
percebemos que, ao testar o aplicativo, ele também gera erros como este:
SQLTransientConnectionException: HikariPool-1 - A conexão não está disponível, a solicitação expirou após 937517ms
Obrigado.
fonte
tcp_keepalive_time
do host (fonte: success.docker.com/article/ipvs-connection-timeout-issue ), portanto, essa abordagem não funcionará mais com contêineres mais novos. No entanto, a partir do Docker 19.03, existe umasysctl
opção que pode ser fornecida aos serviços (por exemplo, em um arquivo de composição). Isso pode ser usado para definir os sinalizadores acima diretamente nos contêineres sem mexer com o host. docs.docker.com/compose/compose-file/#sysctlsHá outra maneira de impedir o fechamento da conexão inativa. O problema está relacionado à descoberta de serviço de enxame padrão, que fecha a conexão inativa após 15 minutos.
Explícito especificado, o
dnsrr
modo do nó de extremidade resolve o problema, por exemplo:fonte