通信链路故障成功发送到服务器的最后一个数据包是0毫秒前

时间:2015-07-13 10:45:32

标签: java spring

我在webapp中遇到了这个异常!像这样:

    Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
            at sun.reflect.GeneratedConstructorAccessor233.newInstance(Unknown Source)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
            at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
            at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1137)
            at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:674)
            at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1086)
            at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2508)
            at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2541)
            at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2323)
            at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:832)
            at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
            at sun.reflect.GeneratedConstructorAccessor24.newInstance(Unknown Source)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
            at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
            at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417)
            at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:344)
            at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
            at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
            at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1148)
            at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106)
            at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
            at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:203)
            ... 81 more
    Caused by: java.net.SocketException: Connection reset
            at java.net.SocketInputStream.read(SocketInputStream.java:168)
            at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:112)
            at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:159)
            at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:187)
            at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3158)
            at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:598)
            ... 99 more

我的dataSource配置是这样的:

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="$J{jdbc.driver}" />
        <property name="url" value="$J{jdbc.url}" />
        <property name="username" value="$J{jdbc.username}" />
        <property name="password" value="$J{jdbc.password}" />
        <property name="validationQuery" value="select 1"></property>
        <property name="initialSize" value="50" />
        <property name="maxIdle" value="100" />
        <property name="minIdle" value="50" />
        <property name="maxActive" value="500" />
        <property name="maxWait" value="20000" />
    </bean>

我的mysql服务器超时变量是:

interactive_timeout 3000000

wait_timeout    30000000

任何人都可以帮助我解决这个问题,这是我的性能测试中发生的。

0 个答案:

没有答案