я читал на tuning JDBC connection pool configurations и под Настройки в таймаута >>Idle Timeout раздел, он читает:Таймаут времени Tomcat/DBCP: что, если сервер зависает?
Для лучшей производительности установите Idle Timeout в ноль (0) секунд, так что простаивающие соединения не будут удалены. Это гарантирует, что, как правило, нет штрафа при создании новых подключений и отключается поток нисходящего монитора. Однако существует риск того, что сервер базы данных сбросит соединение, которое не используется слишком долго.
Последнее предложение является сбивающим с толку. На Tomcat вы можете указать соединение JDBC в виде поиска JNDI изнутри context.xml
. I предположим, что, что Idle Timeout поле по указанной ссылке соответствует требованиям Tomcat's (DBCP) maxIdle
.
Так что я спрашиваю: что произойдет, если я установил maxIdle
в 0, что говорит DBCP не удалять простоя подключений, но затем сервер зависает (или сбрасывает) незанятое соединение? Есть ли конкретное исключение, которое вызывается? Будет ли приложение просто висеть? Как я могу смягчить такие проблемы, но сохраняю maxIdle
в 0?