Соединение с MySql прерывается автоматически. Как настроить Connector/J правильно?

Я считал этот совет из сообщения об ошибке:

Необходимо рассмотреть или истекающую и/или тестирующую законность соединения, прежде чем использование в приложении, увеличивая сервер настроило значения для клиентских тайм-аутов, или с помощью свойства соединения Connector/J 'autoReconnect=true' для предотвращения этой проблемы.

Я использую Spring и JPA. Где я должен настроить Connector/J? (в persistence.xml, или в entityManagerFactory пружинная конфигурация, или в dateSource пружинная конфигурация, или где-то в другом месте?)

48
задан Cœur 16 April 2017 в 03:51
поделиться

1 ответ

Текст описывает три решения для предотвращения прерывания соединения:

  1. Настройте строку соединения с помощью autoReconnect=true. Это свойство строки соединения URL, которая работает на уровне драйвера. Вам необходимо изменить строку соединения в конфигурации источника данных.

    url="jdbc:mysql://localhost:3306/confluence?autoReconnect=true".
    
  2. Увеличьте тайм-аут. Обычно это свойство базы данных. Вы можете увеличить это значение, чтобы увидеть, если вы получите меньше прерывания соединения.

  3. Настройте пул соединений для проверки валидности соединения. Это делается на уровне пула, а не на уровне драйвера. Это будет зависеть от реализации источника данных, который вы используете. Но она должна быть настраиваемой в свойстве источника данных, если вы используете пул, например c3p0.

Добавочные комментарии:

  • Источник/пул данных также может иметь таймаут, который соответствует времени, когда простаивающее соединение остается в пуле. Не путать с таймаутом db.
  • Существует несколько способов проверить действительность соединения. Одним из распространенных способов является наличие таблицы испытаний манекена. Пул выдаст в таблице для проверки манекена выборку, чтобы убедиться в том, что соединение все еще находится в порядке.
67
ответ дан 26 November 2019 в 18:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: