commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "yixin he (Created) (JIRA)" <j...@apache.org>
Subject [jira] [Created] (DBCP-377) Dbcp Idle Check Mechanism Doesn't Work
Date Mon, 05 Mar 2012 14:03:58 GMT
Dbcp Idle Check Mechanism Doesn't Work
--------------------------------------

                 Key: DBCP-377
                 URL: https://issues.apache.org/jira/browse/DBCP-377
             Project: Commons Dbcp
          Issue Type: Bug
    Affects Versions: 1.4
         Environment: Linux mysql 5.1.4
            Reporter: yixin he
            Priority: Critical


Using :commons-dbcp-1.4.jar version

we use a distributed data access layer for Database Sharding with mysql
our web servers use mysql jdbc driver 1.5.4 to connect to this middleware layer with F5 between
them for load balance.
the middleware layer will discard db links that idle for longger than 1 hour,and our dbcp
configures to close links that idle for 
longger than 30 minutes.

here we occurred exceptions as follows:

{code}
    java.net.SocketException
MESSAGE: Broken pipe

STACKTRACE:

java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2637)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1554)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
        at com.mysql.jdbc.Connection.execSQL(Connection.java:3176)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1153)
        at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:794)
        ....
        at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
{code}

it seems that there are times when the links get from pool they have already been broken,we
know that they are forcely closed by the middleware layer、but as dbcp idle check more frequently
than the middleware layer(30m to 60m). How can this happen as the idle links
should have been closed by dbcp first. Are there any problems for the dbcp idle check Mechanism?

our dbcp configurations are as follows

{code}
    <property name="maxActive"><value>32</value></property>
    <property name="initialSize"><value>1</value></property>
    <property name="maxWait"><value>60000</value></property>
    <property name="maxIdle"><value>20</value></property>
    <property name="minIdle"><value>5</value></property>
    <property name="removeAbandoned"><value>true</value></property>
    <property name="removeAbandonedTimeout"><value>180</value></property>
    <property name="connectionProperties"><value>clientEncoding=GBK</value></property>
    <property name="timeBetweenEvictionRunsMillis"><value>60000</value></property>
    <property name="minEvictableIdleTimeMillis"><value>1800000</value></property>
    <property name="testWhileIdle"><value>false</value></property>
    <property name="testOnBorrow"><value>false</value></property>
    <property name="testOnReturn"><value>false</value></property>
    <property name="validationQuery"><value>SELECT @@SQL_MODE</value></property>
    <property name="numTestsPerEvictionRun"><value>32</value></property>
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

Mime
View raw message