DB Pooling isn't work with 'Too many open files' error.
headiron Aug 26, 2010 6:05 AMOur service is stopped because db pooling isn't work.
We review log and found that 'Too many open files' error is occured during connect to database.
------------------------------------------------------------------------------------------------------------------------------------------------------------------
08/22/2010 03:09:42,077 WARN [JDBCExceptionReporter] SQL Error: 0, SQLState: null
08/22/2010 03:09:42,078 ERROR [JDBCExceptionReporter] Could not create connection; - nested throwable: (com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: java.net.SocketException: Too many open files
STACKTRACE:
java.net.SocketException: java.net.SocketException: Too many open files
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2541)
at com.mysql.jdbc.Connection.<init>(Connection.java:1474)
....
------------------------------------------------------------------------------------------------------------------------------------------------------------------
So we restart jboss quickly and service turned to be normal.
We review log again and found some strange error message.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
08/07/2010 05:26:48,718 WARN [LocalManagedConnectionFactory] Destroying connection that is not valid, due to the following exception:
java.sql.SQLException: Ping failed: java.lang.reflect.InvocationTargetException
at com.mysql.jdbc.integration.jboss.MysqlValidConnectionChecker.isValidConnection(MysqlValidConnectionChecker.java:77)
at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnectionFactory.isValidConnection(BaseWrapperManagedConnectionFactory.java:472)
.......
08/07/2010 05:26:48,720 WARN [TxConnectionManager] Connection error occured: org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener@1f58334[state=NORMAL mc=org.jboss.resource.adapter.jdbc.local.LocalManagedConnection@1cd9eab handles=0 lastUse=1281172607562 permit=false trackByTx=false mcp=org.jboss.resource.connectionmanager.JBossManagedConnectionPool$OnePool@6c1995 context=org.jboss.resource.connectionmanager.InternalManagedConnectionPool@103c504]
java.sql.SQLException: Ping failed: java.lang.reflect.InvocationTargetException
at com.mysql.jdbc.integration.jboss.MysqlValidConnectionChecker.isValidConnection(MysqlValidConnectionChecker.java:77)
at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnectionFactory.isValidConnection(BaseWrapperManagedConnectionFactory.java:472)
.....
08/07/2010 05:26:48,722 WARN [JBossManagedConnectionPool] Destroying connection that could not be successfully matched: org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener@1f58334[state=DESTROYED mc=org.jboss.resource.adapter.jdbc.local.LocalManagedConnection@1cd9eab handles=0 lastUse=1281172607562 permit=false trackByTx=false mcp=org.jboss.resource.connectionmanager.JBossManagedConnectionPool$OnePool@6c1995 context=org.jboss.resource.connectionmanager.InternalManagedConnectionPool@103c504]
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Above message is logged regually. ( Printed it per 10 mins )
I think some connection could be invalid with any issues, but I couldn't understand why "destroying connection that could not be successfully matched" is logged and what does mean.
What is meaning of above?
and is it possible to concerned with 'Too many open files' error ?
Our system consist with below component.
Application Server : jBoss AS 4.0.2
Database : MySQL 5.0.54
ORM : hibernate
JDBC Driver : mysql-connector-java-3.1.11-bin.jar
DBPooling : DataSource ( configured to mysql-ds.xml on deploy folder of jbossAS )
and below is config of connection pooling.
<local-tx-datasource>
<jndi-name>jdbc/AAA</jndi-name>
<connection-url>jdbc:mysql://<SERVERNAME>/<DBNAME></connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>{MYSQL-USERID}</user-name>
<password>{MYSQL-PASSWORD}</password>
<exception-sorter-class-name>com.mysql.jdbc.integration.jboss.ExtendedMysqlExceptionSorter</exception-sorter-class-name>
<valid-connection-checker-class-name>com.mysql.jdbc.integration.jboss.MysqlValidConnectionChecker</valid-connection-checker-class-name>
<min-pool-size>0</min-pool-size>
<max-pool-size>150</max-pool-size>
<blocking-timeout-millis>20000</blocking-timeout-millis>
</local-tx-datasource>
Thanks
Ducheol