我们在应用程序中遇到了一个不寻常的问题,在过去的一个月里,我们的应用程序达到了不可恢复的状态,它在应用程序重启后恢复.
背景:我们的应用程序进行数据库查询以获取一些信息,并且此数据库托管在单独的节点上.
有问题的情况:当分析线程转储时,我们看到所有线程都处于可运行状态,从数据库中获取数据,但即使在20分钟后也没有完成.
按预期发布应用程序重启所有线程都已恢复.并且CPU使用率也正常.
下面是线程转储
ThreadPool:2:47″ prio=3 tid=0x0000000007334000 nid=0x5f runnable
[0xfffffd7fe9f54000]java.lang.Thread.State: RUNNABLE at
oracle.jdbc.driver.T2CStatement.t2cParseExecuteDescribe(Native Method)
at
oracle.jdbc.driver.T2CPreparedStatement.executeForDescribe(T2CPreparedStatement.java:518)
at
oracle.jdbc.driver.T2CPreparedStatement.executeForRows(T2CPreparedStatement.java:764)
at ora
All threads in the same state.
问题:
>这个州可能是什么原因?
>在这种情况下如何恢复?