问题标签 [thread-dump]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jakarta-ee - 一旦服务器进入低线程计数状态,有什么方法可以触发 WebLogic 服务器的线程转储?
我们的 WebLogic 设置给我们带来了一些问题。
我们有一个名为 HP BAC 的监控工具,它可以帮助我们可视化服务器的状态,我们将此工具与 Java Thread Dump 实用程序结合使用,这样当线程数较少时,将捕获线程转储。
在某些情况下,服务器会进入低线程数状态,我们不确定原因是什么,因为我们所有的努力找出答案——尤其是通过线程转储似乎是徒劳的。
鉴于“最先进的技术”,我们的线程转储捕获总是在后期/之后触发,并且始终从不捕获对我们的调查有用的线程转储。
我想看看你们其他人是如何进行这样的监控工作的?
java - Java:如何读取锁定的线程转储
谁能帮我理解我应该如何阅读这个堆栈跟踪?
显然存在一些锁定问题,但我只是不知道如何阅读它。例如,具有“-locked”的第一行说“a java.util.ArrayList”...这是否意味着在 ResponseStream.getPacket() (第 466 行)中,它正在synchronized
使用 ArrayList 进行块具有主题?
我的整个应用程序现在都被锁定了,还有许多其他类似的堆栈跟踪,我试图弄清楚如何阅读这个,以便我可以看到问题发生在哪里。
更新
这是一个使用 C3P0 进行数据库连接池的 Web 应用程序。正如您从以下线程中看到的那样,我正在进行一些数据库锁定。我知道其他调试方法,但我真正的问题是我应该如何阅读这些线程转储。
谢谢!-肖恩
java - Java线程转储:没有“等待锁定......”的阻塞线程
我很难理解从 jstack 获得的线程转储,用于在 Tomcat 6(java 1.6.0_22,Linux)上运行的 Spring MVC Web 应用程序。
我看到自己被阻塞的阻塞线程(导致其他线程等待),但是线程转储并没有告诉我他们等待的原因或等待哪个监视器。
例子:
即我错过了堆栈跟踪中的“等待锁定...”行。显然线程锁定了一个 Class 对象,但我不明白为什么线程本身被阻塞。
线程转储不包含任何死锁提示。
如何识别锁定监视器?
谢谢,奥利弗
java - jstack:目标进程没有响应
我正在运行 Ubuntu 服务器版,我想进行 Tomcat 的线程转储。
所以,我首先尝试找出tomcat使用的是哪个PID:
但它不在那里?
所以,我top
改用并找到了 PID 5730。
然后我调用 jstack 来获取线程转储:
这是怎么回事?:-(
我已经尝试按照Jstack 中的描述导出 CATALINA_TMPDIR 并且 Jstat 停止升级到 JDK6u23但这并没有改变任何东西:
更新:
我也尝试过sudo -u tomcat6 jstack -l -F 5730 > threaddumpexceptions2.txt
,但它只会给我控制台上的大量异常。
java - 那些以“pool”开头的java线程是什么?
我遇到了无法正常关闭的 Tomcat 服务器的问题。发出关闭命令后,我进行了线程转储,它看起来像这样:
我认为不允许虚拟机关闭的“嫌疑人”线程是名为“pool-4-thread-1”的线程。其余的要么是守护线程,要么是内部 VM 线程。在试图找出这个线程的用途时,我注意到还有其他 java 程序可以创建具有相似名称的线程(例如,JVisualVM 创建这样的线程)。
所以我想知道是否有人知道这个线程是什么以及如何创建它。
java - 如何分析java线程转储?
我试图更多地了解java,尤其是内存管理和线程。出于这个原因,我最近对查看线程转储感兴趣。
以下是从使用 VisualVM(Java 的内置工具)的 Web 应用程序中提取的几行代码:
首先,我对一些变量名有疑问:
- tid 和 nid 是什么意思?
- Object.wait 之后方括号中的数字是什么?
然后对于堆栈跟踪本身:
- 等待 <.....> (java.lang....)是什么意思, <..>中的数字是多少
- 这是什么意思锁定<.....>(一个java.lang....)同样的问题,什么是在<..>
我认为锁定这个词在某种程度上与等待条件有关,但是,我错了。事实上,我想知道为什么 locked 重复了 3 次,但线程处于可运行状态,如在同一个转储中看到的:
最后,这是其中最糟糕的:
该线程处于可运行状态,但它正在等待条件。什么条件,什么是 0x00000?
为什么堆栈跟踪如此短而没有任何线程类的证据?
如果您能回答我所有的问题,我将不胜感激。
谢谢
java - 如何解释 Java 线程转储?
我在这里使用 Ubuntu(服务器版)在 Tomcat6 上运行了一个 Java Web 应用程序。1-3天后,应用程序变得很慢,所以我在重新启动tomcat后创建了一个threaddump,当应用程序开始变慢时创建了另一个:
重新启动后的线程转储:
- 通过 pkill -3:http ://dl.dropbox.com/u/17844821/zeug/pkill-threaddump-fresh.out
- 通过 jstack:http ://dl.dropbox.com/u/17844821/zeug/jstack-threaddump-fresh.txt
3天后的Threaddump(应用程序现在很慢):
- 通过 pkill -3:http ://dl.dropbox.com/u/17844821/zeug/pkill-threaddump.txt
- 通过 jstack:http ://dl.dropbox.com/u/17844821/zeug/jstack-threaddump.txt
从我发布的转储中,我可以看到有很多线程似乎由于某种原因没有终止。不幸的是,我不知道哪些(类名?)以及为什么。在控制台上使用top
显示“VIRT”的值从〜800(重新启动后)上升到超过4000(3天后)。
我怎样才能更好地解释这些转储?我已经尝试将它们加载到 TDA 中,但没有成功(TDA 似乎没有将它们识别为转储)。
也许有人已经在垃圾场中看到了发生了什么?
java - 了解引用处理程序线程
我将继续深入了解 Java Thread。不幸的是,我的 Java 认证没有涵盖这部分,所以学习的唯一方法是发布一系列愚蠢的问题。经过这么多年的 Java 开发,我有时想知道我还需要学习多少 :-)
特别是我现在关注的是引用处理程序线程。
现在有一些问题,其中一些我知道答案,但我没有发布它,因为我想听听其他人的意见:
- Reference Handler 线程应该做什么?
- 线程转储应该被认为是自下而上的,为什么堆栈跟踪以锁定开始,至少在线程运行后不应该出现锁定语句?
- “本机方法”是什么意思?
- 为什么是“未知来源”,在这种情况下线程转储无法调用源代码?
- 最后waiting on和locked是一样的,为什么?
像往常一样,我恳请回答所有问题,以便我可以标记已回答。
java - Control-Break 在使用 cygwin 的 java 中不起作用
我希望这是问这个问题的正确地方,我正在运行 JAVA 7 for Windows 64 bit 。我使用 cygwin 作为终端。每次我尝试停止一个正在进行的程序时,我都会按下 control-break,通常这会将作业发送到后台,但我会得到以下线程转储。
是否需要更改某些内容以使控制中断以将作业发送到后台。
非常感谢
java - Java 线程转储中的孤立线程
我看到线程转储Java应用程序中经常出现“孤立”线程。我的应用程序本身似乎因 cpu 活动非常低而被冻结,并且我的线程转储显示许多线程正在等待锁定对象,但没有线程锁定该对象。
有没有人似乎有类似的情况,并对如何进一步诊断有任何建议?
这是线程转储:
全线程转储 Java HotSpot(TM) 64 位服务器 VM(1.5.0_12-b04 混合模式):