解决方案 »

  1.   

    SLEEP则是在等待CLIENT端请求啊。 检查一下程序中的等待步骤在什么位置。
      

  2.   

    Sleeping
     正在等待客户端发送新请求.
      

  3.   

    如果是innodb的表 show innodb status可以看到最近的死锁记录
      

  4.   

    这就神奇了,全在read
    java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:105)
    at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:148)
    at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:176)
    - locked <0x00000000e66e3a68> (a com.mysql.jdbc.util.ReadAheadInputStream)
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1899)
    at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:481)
    at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1410)
    at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1133)
    - locked <0x00000000e66e3d48> (a java.lang.Object)
    at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:670)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1024)
    - locked <0x00000000e66e3d48> (a java.lang.Object)
    - locked <0x00000000e66e3df8> (a com.mysql.jdbc.ServerPreparedStatement)
    at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:648)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:641)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:670)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:678)
      

  5.   

    看一下mysql状态 show innodb status;是否发生mysql死锁。
    有sleep有客户端请求没有处理完原因。
      

  6.   


    用完的连接没有释放掉。。连接泄露但是请求确实在read状态,除了没有返回,我不知道还能是什么
      

  7.   


    用完的连接没有释放掉。。连接泄露但是请求确实在read状态,除了没有返回,我不知道还能是什么
    如果是死锁,后台会报错的。那你再看看程序里面在catch里面rollback了没有..
    你把程序结束掉,还是sleep状态吗 
      

  8.   


    用完的连接没有释放掉。。连接泄露但是请求确实在read状态,除了没有返回,我不知道还能是什么
    如果是死锁,后台会报错的。那你再看看程序里面在catch里面rollback了没有..
    你把程序结束掉,还是sleep状态吗 我没有使用事务,把sleep的连接kill掉后,客户端那边马上报broken pipe,线程释放,立杆见影!
      

  9.   


    用完的连接没有释放掉。。连接泄露但是请求确实在read状态,除了没有返回,我不知道还能是什么
    如果是死锁,后台会报错的。那你再看看程序里面在catch里面rollback了没有..
    你把程序结束掉,还是sleep状态吗 我没有使用事务,把sleep的连接kill掉后,客户端那边马上报broken pipe,线程释放,立杆见影!
    数据库一直读的原因呢?
      

  10.   


    用完的连接没有释放掉。。连接泄露但是请求确实在read状态,除了没有返回,我不知道还能是什么
    如果是死锁,后台会报错的。那你再看看程序里面在catch里面rollback了没有..
    你把程序结束掉,还是sleep状态吗 我没有使用事务,把sleep的连接kill掉后,客户端那边马上报broken pipe,线程释放,立杆见影!
    数据库一直读的原因呢?
    什么数据库一直读