| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > сайт на Hibernate периодически падает |
| Автор: ochnev 24.3.2008, 12:43 | ||||||
| Работает сайт на сервлетах и использованием Hibernate. Раз в пару дней при открытии любой страницы появляется ошибка, org.hibernate.exception.JDBCConnectionException:
Ещё в некоторых случаях появляется такое сообщение (ниже в списке exception'ов):
Почему постоянно рвётся соединение с базой данных? Что с этим делать? Перезапускать Tomcat по cron'у - в принципе можно, но это не дело. Раньше очень похожая проблема была, понадобилось приделать connection pool, вроде стало работать нормально, но всех проблем это не решило. Вот фрагмент hibernate.cfg.xml (у меня вообще правильно connection pool настроен?):
Возможно, дело не только в конфигах, но и в том, как я вообще использую Hibernate API. Наверное, я тут ещё напишу ещё об этом. Заранее благодарен за подсказки. |
| Автор: Llucas 25.3.2008, 16:59 |
| Может по тайм-ауту у тебя заканчивается сессия... |
| Автор: nogoody 3.6.2008, 13:37 |
| У меня такая же проблема... вроде бы надо ковыряться с настройками пула c3p0... но сам эту проблему не решил.. если найдешь ответ отпишись плиз |
| Автор: powerOn 3.6.2008, 23:13 |
| не знаю поможет ли, но посмотрите вот эту статью: http://www.hibernate.org/43.html |
| Автор: koba 12.6.2008, 00:31 |
| Вот решение: http://kobyleha.com/ru/programming/java/java_hibernate_broken_pipe_rus |
| Автор: ochnev 12.6.2008, 12:30 | ||||
Кажись работает. Сейчас сделал как в рецепте, локально запустил сайт, подождал час, перегрузил страницу, - не упало. Вот тот волшебный кусок с параметрами, которые я когда-то почему-то не увидел в доках:
Кто ещё это решение пробовал, - у всех всё нормально? |
| Автор: ochnev 16.6.2008, 09:51 |
| Только что опять увидел эту ненавистную ошибку. Сайт после применения предложенного рецепта долго работал нормально, ошибки не возникало, а сейчас опять. Надёжного решения не существует? |
| Автор: skhilkov 16.6.2008, 13:15 |
| У меня такая проблема была. Может даже еще пост старый сохранился. Решение мне помогло следующее - перешел на DBCP. |
| Автор: necromancer 16.6.2008, 14:03 |
| может проблема в волшебных пузырьках? может стоит увеличить время ожидания соединения в базе? или радикально уменьшить время пинга в хибернате? |
| Автор: ochnev 17.6.2008, 08:36 | ||||
Как это делается в MySQL? Я сейчас просмотрел my.ini, не нашёл ничего похожего на такую натсройку. Какой параметр туда добавить надо? Добавлено через 4 минуты и 10 секунд
Помню, была здесь такая тема, я её читал. Но ведь Hibernate 3-й не работает с DBCP. Там соответствующий ConnectionProvider (если я правильно помню) в дистрибутов Hibernate не включён, а сторонняя поделка имеет столько глюков, что использование её вообще не рекомендуется. |
| Автор: ochnev 25.6.2008, 09:25 |
| Я стал сильно подозревать, что дело в особенностях конфигурации системы. Дома я проверил предложенный рецепт, локально под Windows XP всё работает. Ещё на одном сервере под Windows 2003 Server немного попробовал - вроде тоже всё нормально. А под Linux у меня стоит DirectAdmin (на боевом сервере), и он как-то хитро-сложно вмешивается в работу всей системы. Смутно помню, вроде я не мог остановить mysqld из шелла, а только средствами DirectAdmin. В общем, у меня подозрения, что DirectAdmin что-то делает с mysqld, и тот рвёт соединения и восстанавливать их не хочет. Думаю, что теперь делать. Может быть, workaround какой-нибудь сделать, - отлавливать org.hibernate.exception.JDBCConnectionException и программно восстанавливать соединение (осталось разобраться как это сделать)? |