昨天,我们在Debian上运行的Tomcat6服务器出现了一个奇怪的问题:我们出现了第二次长时间的冻结/停机,随着时间的推移,时间越来越长。在冻结期,我们所有的独立网络应用程序都没有反应。停机有很高的规律性,在一个小时内,停机阶段变得比活动阶段更长,直到我们重新启动服务器解决了问题。现在我们想找出它是什么,或者找到一个解决方案,如果它再次发生!
在每个中断阶段,24个内核中的一个100%被tomcat线程使用,所以我们假设该线程所做的一切都冻结了整个tomcat。可悲的是,我们不知道线程在做什么。今天,我研究了一个获取java线程TID的解决方案,发现了一个很好的解决方案:获取Linux中java线程的线程ID。
将它放在我们广泛的日志文件条目中并找到JVM线程将非常容易,但是如果它是一个不完全在我们控制之下的线程呢?那么拥有同步的TID/Java-Thread-ID快照的烦恼又如何呢?这就引出了我的核心问题:
有没有办法从已知的Linux TID中获取JVM线程名/ID?
我的希望很小,但可能存在对JVM的跨进程调用或其他我尚未考虑的想法。
我们在该服务器上运行Yourkit探查器,但在中断阶段它无法记录任何内容,因此我们无法找到违规线程。
使用JStack
"Thread-0" prio=10 tid=0x00002aaab01c3800 nid=0x246d runnable [0x00000000423c7000]
^ name ^ Java thread id ^ native (OS) thread id
问题内容: 有什么办法可以在Python中按进程名称获取PID? 例如,我需要获得通过。 问题答案: 你可以使用进程的名字来的PID 通过subprocess.check_output: 将运行命令为, 如果返回码非零,则会引发CalledProcessError。 要处理多个条目并转换为整数: 在[21]中:get_pid(“ chrome”) 或者通过标记获取单个pid:
问题内容: 这应该很简单,但我只是没有看到。 如果我有一个进程ID,该如何使用它来获取有关该进程的信息,例如进程名称。 问题答案: 在Linux下,您可以读取proc文件系统。文件包含命令行。
问题内容: 几个具有相同名称的进程正在主机上运行。使用 python 或 jython 按名称获取那些进程的PID的跨平台方法是什么? 我想要类似但在python中的东西。(我没有。) 我无法解析,因为它可能不可用(在HP-UX上)。 我不想运行并解析输出,因为我认为它很丑陋(不同操作系统中的字段顺序可能不同)。 目标平台是Solaris,HP-UX,也许还有其他平台。 问题答案: 您可以使用在W
问题内容: 有时,当我尝试启动Firefox时,它会显示“ Firefox进程已在运行”。所以我必须这样做: 我想要的是一个可以为我完成所有任务的命令。它会在进程列表中使用一个输入字符串并将其(或其他内容)放入其中,并杀死输出中的所有进程: 我尝试在PHP中执行此操作,但似乎只显示已在PHP脚本本身中执行过的进程(因此,它显示的唯一进程是其自身。) 问题答案: 详细信息:http : //linu
问题内容: 我正在编写几个Java程序,在完成我想做的所有事情之后,需要在单独的JVM中终止/清理工作。为此,我将需要获取要创建的Java进程的PID。 问题答案: 在Windows和Unix上均可使用。您可以使用从Java程序中调用此命令。的样本输出如下 您可能需要对此进行解析,然后检查标准名称,然后从相应的行中获取pid。
问题内容: 我想知道是否有一种功能或某种与之等效的方法。 问题答案: 您的函数名称中缺少。返回元素的集合,这些元素需要迭代: IE8及以下版本不支持,因此您必须找到一个polyfill或使用(IE8)。