请帮忙看下出现I/O Error: Read timed out这种错误的原因是什么?
有几个任务同时在运行,其它的可以正常运行的。04:01:03,561 TL8thMGT.node1@TL-8thMGT-APP pool-1-thread-6  WARN SessionUtil: - Null request found.
04:01:03,779 TL8thMGT.node1@TL-8thMGT-APP pool-1-thread-6  WARN SessionUtil: - Null request found.
04:01:24,904 TL8thMGT.node1@TL-8thMGT-APP pool-1-thread-6  WARN SessionUtil: - Null request found.
04:21:25,293 TL8thMGT.node1@TL-8thMGT-APP pool-1-thread-6  WARN JDBCExceptionReporter: - SQL Error: 0, SQLState: 08S01
04:21:25,293 TL8thMGT.node1@TL-8thMGT-APP pool-1-thread-6 ERROR JDBCExceptionReporter: - I/O Error: Read timed out
04:21:25,340 TL8thMGT.node1@TL-8thMGT-APP pool-1-thread-6 ERROR ProjectStatusTaskImpl: - Exception :
com.gearteks.framework.common.exception.GTSystemException
at com.gearteks.framework.common.exception.a.a(GTExceptionGenerator.java:52)
at com.gearteks.framework.process.i.if(BaseProcess.java:589)
at com.gearteks.framework.process.i.byte(BaseProcess.java:560)
at com.gearteks.imanage.process.sysadmin.bq.if(ProjAttentionProcess.java:127)
at com.gearteks.imanage.process.ProjectProcess.for(ProjectProcess.java:5764)
at com.gearteks.imanage.process.ProjectProcess.projectExecutiveAttention(ProjectProcess.java:5758)
at com.gearteks.imanage.process.ProjectProcess.projectExecutiveAttention(ProjectProcess.java:5556)
at com.gearteks.imanage.process.a5.pc(JobProcess.java:6084)
at com.gearteks.imanage.schedule.impl.ProjectStatusTaskImpl.execute(ProjectStatusTaskImpl.java:105)
at com.gearteks.framework.common.schedule.c.runTask(AbstractTask.java:319)
at com.gearteks.framework.common.schedule.l.run(HibernateSessionRunnable.java:83)
at com.gearteks.framework.common.schedule.d.execute(SchedulerChainTask.java:120)
at com.gearteks.framework.common.schedule.c.runTask(AbstractTask.java:319)
at com.gearteks.framework.common.schedule.l.run(HibernateSessionRunnable.java:121)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.hibernate.exception.JDBCConnectionException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:72)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2153)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
at org.hibernate.loader.Loader.list(Loader.java:2024)
at org.hibernate.hql.classic.QueryTranslatorImpl.list(QueryTranslatorImpl.java:874)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:146)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1093)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at com.gearteks.framework.process.i.if(BaseProcess.java:587)
... 15 more
Caused by: java.sql.SQLException: I/O Error: Read timed out
at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1049)
at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:406)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:693)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1669)
at org.hibernate.loader.Loader.doQuery(Loader.java:662)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2150)
... 22 more
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.DataInputStream.readFully(DataInputStream.java:176)
at java.io.DataInputStream.readFully(DataInputStream.java:152)
at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:826)
at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:707)
at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466)
at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103)
at net.sourceforge.jtds.jdbc.ResponseStream.peek(ResponseStream.java:88)
at net.sourceforge.jtds.jdbc.TdsCore.wait(TdsCore.java:3870)
at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1042)
... 30 more
04:21:50,606 TL8thMGT.node1@TL-8thMGT-APP pool-10-thread-1  WARN JDBCExceptionReporter: - SQL Error: 0, SQLState: 08S01
04:21:50,606 TL8thMGT.node1@TL-8thMGT-APP pool-10-thread-1 ERROR JDBCExceptionReporter: - Network error IOException: Connection timed out: connect
04:21:50,606 TL8thMGT.node1@TL-8thMGT-APP pool-10-thread-1 ERROR a: - SystemEvent Handler:
org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:72)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:318)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:109)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:137)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1262)
at com.gearteks.framework.common.e.a$a.run(SystemEventScheduler.java:71)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:280)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:135)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:65)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:146)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:170)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: Network error IOException: Connection timed out: connect
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:372)
at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:178)
at org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:37)
at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:290)
at org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:771)
at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:315)
... 14 more
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:367)
at java.net.Socket.connect(Socket.java:524)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:289)
at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:250)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:297)
... 23 more

解决方案 »

  1.   

    回复1楼,应该在哪个版问呢?回复2楼,请详细说明下为什么锁会导致I/O Error: Read timed out?
      

  2.   


    我也不懂,推测一下,sorry
    当进程需要的资源被锁定时,进程会处于阻塞状态,当阻塞时间过长时,Sql server就会发生超时错误
    如果发生死锁,sql server会检测到死锁,然后终止回滚开销最小的进程,返回什么错误就不太清楚了
      

  3.   

    你先查查有没有阻塞,我一般用:selectg * from sys.sysprocesses where blocked<>0来看看有没有数据,有的话证明有阻塞,然后再具体分析,然后我看到你的错误信息里面有query这个字样,可能是你的查询运行过慢,超过了SQLServer的限制(SQLServer有配置超时的,去检查会不会设的太低),也有可能在java中固定了超时,当然首要建议是优化查询,然后才是增大超时配置。
      

  4.   

    这个是定时任务运行的,而且不是每次都会出这种问题,不一定能查到阻塞的进程。SQLServer有配置超时是指SET LOCK_TIMEOUT吗?但是它是返回的错误信息是下面这个:
    java.sql.SQLException: Lock request time out period exceeded.还有remote query timeout (s)这个参数设置好像没什么影响。