![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
PovAnd |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 20.8.2007 Репутация: нет Всего: нет |
Есть приложение работающие с БД в отдельные моменты интенсивно. Вот в такие моменты раз за разом получаю нижеидущий эксепшен. Как его побороть?
12:33:00,072 WARN JDBCExceptionReporter:77 | SQL Error: 0, SQLState: 08S01 12:33:00,072 ERROR JDBCExceptionReporter:78 | The driver was unable to create a connection due to an inability to establish the client portion of a socket. This is usually caused by a limit on the number of sockets imposed by the operating system. This limit is usually configurable. For Unix-based platforms, see the manual page for the 'ulimit' command. Kernel or system reconfiguration may also be required. For Windows-based platforms, see Microsoft Knowledge Base Article 196271 (Q196271). 12:33:00,072 WARN JDBCExceptionReporter:77 | SQL Error: 0, SQLState: 08S01 12:33:00,087 ERROR JDBCExceptionReporter:78 | The driver was unable to create a connection due to an inability to establish the client portion of a socket. This is usually caused by a limit on the number of sockets imposed by the operating system. This limit is usually configurable. For Unix-based platforms, see the manual page for the 'ulimit' command. Kernel or system reconfiguration may also be required. For Windows-based platforms, see Microsoft Knowledge Base Article 196271 (Q196271). 12:33:00,087 WARN MatchEventsReader:171 | org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:599) at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:377) at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:263) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy9.insert(Unknown Source) -------------- Конфиг sessionFactory в Spring для hibernate:
Как нужно (если можно) ее сконфигурить, так чтобы проблемы не было? |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
Попробоавть поставить свойство hibernate.connection.pool_size побольше
|
|||
|
||||
chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 11 Всего: 77 |
Пробовал?
http://support.microsoft.com/kb/196271 Ты под какой осью? Добавлено через 1 минуту и 17 секунд Антон, тут 12:33:00,072 ERROR JDBCExceptionReporter:78 | The driver was unable to create a connection due to an inability to establish the client portion of a socket. Имхо, проблема с сокетами - это не уровень хибернейта. Оно прямым текстом намякиваеть на узкое горлышко оси -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
dejavu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 3.1.2009 Где: Харьков Репутация: нет Всего: нет |
Вопрос на тему Нехватка connections MqSql + hibernate +Spring, .
Ситуация Hоst Provider установил max кол-во активных конектов к MySQL = 30 и предположим увеличивать не хочет. Веб приложение на основе MqSql + hibernate +Spring требует от 10 - до 40 конектов и это без нагрузки в режиме теста 2-3 пользователя (при тесте на другом сервере где количество активных конектов установлено 100) Думаю возможная причина в настройке пула В моем случае пробую вот так , все равно создает больше конектов чем 30 <property name="hibernateProperties"> <props> .............. <!-- configuration pool via c3p0--> <prop key="hibernate.c3p0.min_size">5</prop> <prop key="hibernate.c3p0.max_size">20</prop> <prop key="hibernate.c3p0.initial_pool_size">20</prop> <prop key="hibernate.c3p0.timeout">5000</prop> <prop key="hibernate.c3p0.acquire_increment">1</prop> .................. </props> </property> Если у кого нибудь мысли как настроить пул чтобы вписаться в 30 и при этом по возможности повысить производительность Был бы благодарен за рекомендации в идеологии настройке пула , так как простое описание свойств в общем ничего не говорит В поиске на эту тему, складывается впечатление что каждый как хочет так и др.....т |
|||
|
||||
skhilkov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 371 Регистрация: 11.4.2006 Где: TOMSK Репутация: 2 Всего: 7 |
dejavu, не знаю какая у Вас функциональность, но мне кажется что 40 соединений для 2-3х пользователей - это многовато...
думаю что стоит еще раз пересмотреть все места где устанавливабтся соединения... Хотя при всем при этом пул не должен вроде как позволять создавать больше подключений.... В общем по поводу c3p0 ничего не могу сказать... я пробовал его год назад, но у меня столько запарок вышло с его настройками, что я пересел на dbcp и с тех пор не знаю проблем... -------------------- Кто понял жизнь, тот не спешит. |
|||
|
||||
barracuda477 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 14.12.2008 Репутация: нет Всего: нет |
там указано про порты больше чем 5000, в то время как для мускуля по дефолту 3306 глянь http://dev.mysql.com/doc/refman/5.1/en/too...onnections.html причиной может быть то, что все 30 коннекшенов реально юзаются и мускуль не может тебе выделить больше. я в хибернейте не силён, разбираюсь как раз. но предположу такие выходы: 1) увеличивать лимит коннекшинов в мускуле, например, с 30 до 100 (если хостер согласится) 2) закрывать коннекшены если они не юзаются, возможно твоё приложение всё время создаёт коннекшены вместо того, чтобы реюзать уже те, которые есть в пуле 3) заоптимайзить запросы (если выполняются долго. Кстати, индексы верно проставлены и юзаются? Сколько записей в самых больших таблицах? Насколько сложные запросы ?) Кстати, можно зайти на сервак мускуля и посмотреть что он делает через "showprocesslist".
+1 |
||||
|
|||||
dejavu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 3.1.2009 Где: Харьков Репутация: нет Всего: нет |
Спасибо всем кто ответил, действительно проблема была не в настройке пула (хотя я считаю разобраться с ним стоило, считаю важная тема при разворачивании на реалном сервере ) а в не зарытых конектах, которые произошли от собственной не внимательности, кому интересно
чтобы не наступали на грабли как я - проверьте закрывает гибернат сессии - здесь почти прямая зависимость сессия- конект в самом общем случае, если правильно настроили транзакт менеджера который и делает в в спринге это за вас все будет работать правильно |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |