2010-06-29 2 views
1

J'ai une application que j'utilise BoneCP pour le regroupement de connexions et quand je déploie la guerre sur tomcat, cela fonctionne parfaitement. Mais quand je crée une autre guerre (presque identique, juste différent peau et connexion DB) ans pour les déployer à la fois le je reçois l'erreur suivante lorsque tomcat démarre:Trop de connexions à la source de données

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

Notez que cela ne se produit pas après une période de temps , donc ce n'est pas que je fuit les connexions en ne les fermant pas, mais plutôt au démarrage.

Mes propriétés de connexion/mise en veille prolongée boneCP dans ma config de printemps sont les suivantes:

<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> 
.... 

Quelqu'un at-il des idées?

+0

Combien de connexions votre serveur mysql peut-il gérer? lancer la requête 'afficher des variables comme 'max_connections';' – nos

Répondre

3

Selon this fil:

Ceci est un signe que vous avez demandé BoneCP pour créer plus de connexions puis votre serveur MySQL est configuré pour accepter . Soit augmenter le nombre de connexions mysql permettra (via administrateur mysql) ou dire bonecp à créer moins de connexions.

Par défaut MySQL vous permet de créer juste quelques connexions donc je commencerais par d'abord.

P.S. Désolé pour le test de captcha - le nombre de tentatives de spambot que j'obtiens hit with is unbelievable; Je vais à le baisser d'un cran.

Soit vous devez diminuer bonecp.maxConnectionsPerPartition, ou modifier la configuration de votre serveur MySQL pour accepter 60 * number of instances of your app connexions simultanées.

2

Vous avez créé 3 partitions avec un maximum de 60 connexions chaque sorte que vous frapper MySQL avec 180 connexions là-bas (la valeur par défaut dans une base MySQL est bien inférieur à celui).

+0

??? S'il vous plaît voir (http://stackoverflow.com/questions/14901508/what-are-the-maximum-concurrent-connections-to-a-mysql-database) Il dit "Vous aurez probablement à court de mémoire, les handles de fichiers, et les sockets réseau, sur votre serveur bien avant que vous n'ayez atteint cette limite. " – aloplop85

+0

La limite mentionnée ci-dessus est la valeur par défaut. Sur ma machine en 2013 c'était - montre des variables comme 'max_connections'; 151. Donc oui, le nombre maximum est la gamme maximale: 4 294 967 295 (par exemple 2 ** 32 - 1) par le lien que vous avez fourni, mais ce n'est pas la valeur par défaut. – Paul

Questions connexes