为什么 WebSphere 的线程会挂起?

Why WebSphere's threads hangs up?

我有 WAS 7 和 Filenet CE 5.1,但遇到了麻烦。 为什么 WebSphere 的线程挂起。是JDBC驱动错误吗?

能不能请教一下。非常感谢!

[22.06.16 13:14:58:921 YEKT] 0000001d ThreadMonitor W   WSVR0605W: Thread "WebContainer : 15" (00000047) was active for 631301 msec and can be hanged up.  Total threads that can be hang up: 69.
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:140)
        at com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1782)
        at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:4838)
        at com.microsoft.sqlserver.jdbc.TDSCommand.startResponse(IOBuffer.java:6150)
        at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:402)
        at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
        at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
        at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
        at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
        at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(SQLServerPreparedStatement.java:332)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.pmiExecute(WSJdbcPreparedStatement.java:942)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.execute(WSJdbcPreparedStatement.java:618)
        at com.filenet.engine.dbpersist.DBExecutionElement.execute(DBExecutionElement.java:218)
        at com.filenet.engine.dbpersist.DBExecutionContext.getNextResult(DBExecutionContext.java:106)
        at com.filenet.engine.dbpersist.DBStatementList.executeStatements(DBStatementList.java:161)
        at com.filenet.engine.persist.DBStatementList2.executeStatementsNoResult(DBStatementList2.java:57)
        at com.filenet.engine.persist.IndependentPersister.executeChangeWork(IndependentPersister.java:409)
        at com.filenet.engine.persist.IndependentPersister.executeChange(IndependentPersister.java:225)
        at com.filenet.engine.persist.SubscribablePersister.executeChange(SubscribablePersister.java:172)
        at com.filenet.engine.jca.impl.RequestBrokerImpl.executeChanges(RequestBrokerImpl.java:1266)
        at com.filenet.engine.jca.impl.RequestBrokerImpl.executeChanges(RequestBrokerImpl.java:1146)
        at com.filenet.engine.ejb.EngineCoreBean._executeChanges(EngineCoreBean.java:618)

堆栈表明线程正在等待从您的数据库接收数据。

可能的原因可能包括:

  • 数据库已关闭(或无法通过网络通信)
  • 数据库发生死锁
  • 您正在获取一些非常大的数据集 and/or 这样做效率低下,以至于该语句花费了过多的时间。您从未提及您的查询是否完成,但如果完成,我怀疑这个选项是可疑的。