Лучший способ отладить соединения MySQL, которые закрываются для меня через ~ 39 минут? - PullRequest
1 голос
/ 24 октября 2010

У меня есть Hibernate 3.3, c3p0, MySql 5.1 и Spring. Соединения MySQL в моих сервисных вызовах постоянно закрываются через ~ 39 минут. Естественное время моего звонка в службу поддержки составляет порядка 5 часов.

Я пытался изменить различные конфигурации c3p0 и т. Д., Чтобы избежать 39-минутного ограничения. Не повезло.

Существует ли более прямой, систематический способ регистрации или устранения неполадок? то есть я могу узнать почему соединение закрывается, и кем , на каком уровне?

Обновление: трассировка стека

24 Oct 2010 02:22:12,262 [WARN] 012e323c-df4b-11df-89ed-97e9a9c1ac19 (Foobar Endpoint : 3) org.hibernate.util.JDBCExceptionReporter: SQL Error: 0, SQLState: 08003
24 Oct 2010 02:22:12,264 [ERROR] 012e323c-df4b-11df-89ed-97e9a9c1ac19 (Foobar Endpoint : 3) org.hibernate.util.JDBCExceptionReporter: No operations allowed after connection closed.
24 Oct 2010 02:22:12,266 [ERROR] 012e323c-df4b-11df-89ed-97e9a9c1ac19 (Foobar Endpoint : 3) org.hibernate.event.def.AbstractFlushingEventListener: Could not synchronize database state with session

Ответы [ 2 ]

1 голос
/ 25 октября 2010

У меня есть Hibernate 3.3, c3p0, MySql 5.1 и Spring. Соединения MySQL в моих сервисных вызовах постоянно закрываются через ~ 39 минут. Естественное время работы моего сервисного звонка составляет порядка 5 часов.

Я не уверен, что понял. Есть ли у вас процессы, которые должны работать в течение 5 часов, но в настоящее время прерываются через ~ 39 минут (или, вероятно, 2400 секунд). Можешь подтвердить? Что раньше работало? Вы что-нибудь изменили?

Между тем, вот несколько идей:

  • начать с базы данных (см. B.5.2.11. Ошибки связи и прерванные соединения )
    • запустить сервер с опцией --log-warnings и проверить журналы на наличие подозрительных сообщений
    • посмотрите, можете ли вы воспроизвести проблему, используя клиент MySQL с хоста db
    • , если это работает, сделать то же самое с компьютера сервера приложений
    • если все работает, вы будете знать, что с MySQL все в порядке
  • перейти на уровень сервера приложений
    • активировать ведение журнала (Hibernate и C3P0 ), чтобы получить трассировку полного стека и / или другие подсказки о виновнике
    • также, пожалуйста, покажите свои настройки конфигурации C3P0

И не забывайте, что конфигурация C3P0 при использовании Hibernate очень специфична , а некоторые настройки должны быть в файле c3p0.properties.

0 голосов
/ 25 октября 2010

Конфигурация автоматического переподключения

http://hibernatedb.blogspot.com/2009/05/automatic-reconnect-from-hibernate-to.html

...