- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们的应用程序遇到了一个不寻常的问题,在过去的一个月里,我们的应用程序达到了不可恢复的状态,它在应用程序重启后恢复了。
背景:我们的应用程序进行数据库查询以获取一些信息,并且该数据库托管在单独的节点上。
问题案例:分析线程转储时,我们看到所有线程都处于可运行状态,正在从数据库中获取数据,但即使在 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.
问题:
最佳答案
它可能正在等待来自数据库服务器的网络数据。在 I/O 上等待(阻塞)的 Java 线程被 JVM 描述为处于 RUNNABLE 状态,即使从程序的角度来看它们是阻塞的。
关于java - 显示可运行状态的线程转储,但它已挂起很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8967702/
我是一名优秀的程序员,十分优秀!