![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
koroplysov |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Описание проблемы:
Для написания приложения использую NetBeans+Tomcat+DB2, версия языка 1.4. На боевом сервере WebSphere(x86)+DB2. Коннект происходит через мост jdbc-odbc. Далее в исторической последовательности. Все построено на сервлетах. Приложение использует небольшое количество людей(около 50 чел), но они активно вносят данные. Эти данные записываются в базу. В базе все нормализовано и поэтому достаточно много связей. Как следствие при внесения записи в одну таблицу то заносятся и вдругие(в среднем 1 к 5). В день около 500 а всего в итоге в среднем 2500(500*5) записей вносится. Ночью делается бекап базы. Вначале делал просто: на каждый insert, update,delete и select открывался отдельный коннект и после использования закрывал. Но через некоторое время(в зависимости от активности, бывало и каждый час) на боевом сервере WebSphere зависала и приходилось перезапускать, хотя сервер(железка) очень быстрый(16 ядер 8Гб). Второй вариант хранить один глобальный коннект который создавался и запускался(в ServletContextListener) так:
Это работает замечально, но каждое утро коннект теряется и не восстанавливается. Подозреваю что после ночного резервирования(при этом коннекты отрубаются). Прочитал про пул соединений. Скачал commons-dbcp. Толком поэтапного объяснения не нашел, но нашел одну статейку откуда целиком все и содрал:
Храню глобальный ConnectionPool где и беру коннект, а создаю в ServletContextListener. В mainm пример использования. Каюсь коннект не возвращал после использования(вот при написании увидел), но как-то все слишком сложно. Результат: Через пол часа или меньше(работал я один) на боевом сервере приложение безнадежно виснет. Собственно вопросы и просьбы: Объясните как этим пулом пользоваться. Не повлияет ночной бекап на соединения(они же рвутся)? Обязательно ли возвращать коннекты? Можно ли зарезервировать минимальное количество активных коннектов? Большая просьба привести подробный пример, вы сделаете большое дела для таких как я. Зависит ли commons-dbcp от Tomcat и будет ли нормально работать на WebSphere? Спасибо!!! Это сообщение отредактировал(а) koroplysov - 8.4.2011, 09:41 |
||||
|
|||||
dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 4 Всего: 16 |
>Вначале делал просто: на каждый insert, update,delete и select открывался отдельный коннект.
Начни их возвращать - это будет первый правильный шаг, который, возможно, и решит проблему. - WebSphere имеет свой модуль соединений. Тебе надо его сконфигурировать и запрашивать соединения из объекта DataSource, который станет доступен на jndi. - На томкат тоже научись это делать так, чтобы пул клал javax.sql.DataSource на JNDI. Шаблон работы с соединениями следующий:
|
|||
|
||||
koroplysov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Спасибо за советы!
Коннекты я всегда conn.close();. Сконфигурировать соединение на вебсфере не проблема. Проблема в логике работы. Использую отдельный пул на случай если на сервере такого нет(использую то odbc). За сервлет спасибо. Не нужно ли будет перенастраивать чего при переходе с Tomcat на WebSphere? |
|||
|
||||
koroplysov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Что-то приложение не виснет после того как я прописал отдачу в пул коннекта pool.returnConnection( con ); где pool типа ConnectionPool(из второго листинга).
Помоему всетаки по этой причине. Буду держать в курсе пишущих и смотрящих. |
|||
|
||||
koroplysov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Все виснет через некоторое время!!!
|
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
koroplysov, значит, ищи утечку. Можешь воспользоваться профайлером, либо на стороне базы посмотреть активные коннекты и исполняющийся в них код (не знаю, возможно ли это в DB2).
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
koroplysov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Блин, начинаю отчаиваться!!!
Народ научите использовать соединение JNDI, пожалуйста. Для кода в последнем листинге. Как на сервере(WebSphere) настроить я знаю. Как это в NetBeans настроить? ![]() |
|||
|
||||
dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 4 Всего: 16 |
||||
|
||||
koroplysov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
С праздником всех!!!
Мы всегда будем первыми на земном шаре и в космосе!!! Теперь по делу. Решил я всетаки настроить второй листинг и изменил:
Со вчерашней второй половины дня полет нормальный!!! Буду держать в курсе. Ведь удобно |
|||
|
||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
А что под DB2 нет нормального JDBC драйвера? Использовать мост jdbc-odbc в продукционной системе кажется каким-то извращением.
|
|||
|
||||
koroplysov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 29.8.2009 Репутация: нет Всего: нет |
Да есть конечно. Просто так сложилась, долго объяснять.
А теперь о приятном: РАБОТАЕТ!!! Вот уже два дня работает без сбоев и резервирование базы переваривает. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |