2010-10-10 2 views
2

Nous avons récemment changé pour le garbage collector CMS sur notre serveur (XX:+UseConcMarkSweepGC) qui a bien fonctionné lors des tests. Quand nous sommes allés à la production, les choses étaient OK pour les premières heures, mais nous avons commencé soudain à voir le redoutaient:Le pool de connexion Tomcat 6 devient farfelu lorsque CMS GC est utilisé

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, 
pool error Timeout waiting for idle object 

Nous avons vu ces messages lorsque la base de données est en baisse physiquement ou lourdement chargé, mais ce WASN C'est le cas cette fois. J'ai donc commencé à me demander si le changement récent de GC pourrait être le coupable.

Ce que je ne comprends pas, c'est pourquoi nous n'avons pas vu cela auparavant. Est-ce que le changement de GC en balayage de marque concurrente changerait quelque chose (finalizers, peut-être) qui exposerait des problèmes avec cette configuration?

Mes context.xml params ressemblent à ceci:

<Resource name="jdbc/DB" auth="Container" type="javax.sql.DataSource" 
      maxActive="64" maxIdle="60" maxWait="10000" 
      defaultAutoCommit="false" 

J'ai lu this link et commencé à me demander si ceux-ci étaient des paramètres incroyablement naïfs. À ma connaissance, au-delà de 60 connexions, nous allons commencer à ouvrir et fermer les connexions sans les retourner à la piscine. Mais je ne comprends toujours pas s'il y a un lien entre ceci et notre changement de GC.

Nous utilisons Tomcat 6.0.29 avec le connecteur MySQL 5.1.45 (5.1.12 JDBC).

Répondre