Вы, вероятно, открываете все больше и больше соединений и никогда не закрываете их, в конечном счете достигая настроенного максимального количества соединений в вашей базе данных.
Найдите, где вы открываете соединения, и убедитесь, что вы закрываете их.Если вы открываете соединение для каждого запроса, но не закрываете его, это легко найти и исправить.Или, возможно, вы не закрываете свое соединение, когда получаете ошибку - проверьте код обработки исключений.
Рекомендуемый подход при использовании соединений с БД состоит в том, чтобы использовать try finally
, чтобы приложить максимальные усилия для закрытия соединений БД:
Connection con;
try {
con = ...; // open connection
// do work
catch (SQLException e) {
// do whatever
} finally {
if (con != null && !con.isClosed()) {
try {
con.close();
catch (SQLException e) {
// Don't throw from here or you'll lose any return/exception from above
log.error("Failed to close connection", e);
}
}
}