Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Aplicativo Spring perdendo conexão com o MySql após 8 horas. Como configurar corretamente?


A resposta curta é que deve ser suficiente. O DBCP dá suporte ao teste da conexão ao emprestar do pool de conexões (o padrão), mas também dá suporte ao teste ao retornar e ao teste enquanto ocioso.

Também vale a pena entender o que pode estar dando errado aqui. Parece que algo entre o servidor Tomcat e o banco de dados está eliminando a conexão ociosa após um tempo limite (como um roteador ou firewall). O problema com isso é que o Tomcat acha que ainda tem uma conexão válida, tenta fazer algum trabalho com a conexão e falha, mas mantém a conexão ativa e a devolve ao pool. Agora, qualquer outra tentativa de falar com o banco de dados falhará se for fornecida a mesma conexão quebrada do pool.

Acho que foi o excelente 'Release It!' de Michael Nygard. livro que descreveu esse cenário em uma de suas histórias das trincheiras.

Você também vai querer ver como o MySQL limpa as conexões inativas, pois quando o Tomcat perde a conexão após 8 horas, o banco de dados também não tem conhecimento da conexão com falha.

Um ponto final, se você estiver usando o Tomcat 7, mude para a nova conexão piscina pois oferece melhor desempenho do que DBCP.