2010-06-29 2 views
1

У меня есть приложение, в котором я использую BoneCP для объединения пулов, и когда я развертываю войну в tomcat, она отлично работает. Но когда я создаю еще одну войну (почти идентичны, просто разные кожи и DB соединение) анс развернуть их как я получаю следующее сообщение об ошибке, когда кот начинает вверх:Слишком много подключений к источнику данных

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections" 

Обратите внимание, что это не происходит после определенного периода времени , поэтому я не пропущу связи, не закрывая их, а скорее при запуске.

Моего Hibernate свойства соединения/boneCP в моей весенней конфигурации следующим образом:

<bean id="sessionFactory" 
     class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.connection.provider_class">com.jolbox.bonecp.provider.BoneCPConnectionProvider</prop> 
      <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop> 
      <prop key="hibernate.connection.url">${connection.url}</prop> 
      <prop key="hibernate.connection.username">${connection.username}</prop> 
      <prop key="hibernate.connection.password">${connection.password}</prop> 
      <prop key="bonecp.idleMaxAge">60</prop> 
      <prop key="bonecp.idleConnectionTestPeriod">5</prop> 
      <prop key="bonecp.partitionCount">3</prop> 
      <prop key="bonecp.acquireIncrement">10</prop> 
      <prop key="bonecp.maxConnectionsPerPartition">60</prop> 
      <prop key="bonecp.minConnectionsPerPartition">20</prop> 
      <prop key="bonecp.statementsCacheSize">50</prop> 
      <prop key="bonecp.releaseHelperThreads">3</prop> 
     </props> 
    </property> 
.... 

Кто есть какие-нибудь идеи?

+0

Сколько соединений может обрабатывать ваш сервер mysql? запустите запрос 'show variables like 'max_connections';' – nos

ответ

3

По this теме:

Это признак того, что вы попросили BoneCP создать больше соединений, то сервер MySQL сконфигурирован для принять. Либо увеличьте число подключений , которые mysql разрешит (через mysql administrator) или сообщите bonecp, чтобы создать меньше подключений.

По умолчанию MySQL позволяет вам создать всего несколько подключений, поэтому я бы начал с этого в первую очередь.

P.S. Извините, что вы проверили captcha test - количество попыток spambot я получаю хит с невероятным; Я собираюсь сделать .

Вы должны либо уменьшить bonecp.maxConnectionsPerPartition или изменить конфигурацию сервера MySQL, чтобы принять 60 * number of instances of your app одновременных соединений.

2

Вы создали 3 раздела с максимальным количеством подключений по 60, поэтому вы нажимаете на mysql с 180 соединениями (по умолчанию в mysql намного меньше).

+0

??? Пожалуйста, см. (Http://stackoverflow.com/questions/14901508/what-are-the-maximum-concurrent-connections-to-a-mysql-database) В нем говорится: «Возможно, у вас не хватит памяти, и сетевые сокеты на вашем сервере задолго до того, как вы приблизитесь к этому пределу ». – aloplop85

+0

Предел, о котором говорилось выше, является значением по умолчанию. На моей машине в 2013 году было - показывать переменные типа max_connections; 151. Таким образом, максимальное число - это максимальный диапазон: 4 294 967 295 (например, 2 ** 32 - 1) по указанной вами ссылке, но это не значение по умолчанию. – Paul