Java Weblogic、JVM和EAR
我计划在生产weblogic(10)实例上使用JMAPJDK1.5工具进行堆转储 实际上,在这个weblogic实例上部署了3个EAR(可能更多,我不知道我没有访问权限) 有人告诉我“weblogic为每个EAR创建一个JVM” 有人能证实这一点吗 使用jmap,我需要jvm pid作为参数来进行堆转储。。。Java Weblogic、JVM和EAR,java,jakarta-ee,jvm,weblogic,ear,Java,Jakarta Ee,Jvm,Weblogic,Ear,我计划在生产weblogic(10)实例上使用JMAPJDK1.5工具进行堆转储 实际上,在这个weblogic实例上部署了3个EAR(可能更多,我不知道我没有访问权限) 有人告诉我“weblogic为每个EAR创建一个JVM” 有人能证实这一点吗 使用jmap,我需要jvm pid作为参数来进行堆转储。。。 因为我有3个EAR,我想我有3个pid,所以我想知道如何知道哪个pid对应于哪个EAR Nope-每个Weblogic服务器(或任何java进程)都在自己的JVM中运行,并具有自己的PID
因为我有3个EAR,我想我有3个pid,所以我想知道如何知道哪个pid对应于哪个EAR Nope-每个Weblogic服务器(或任何java进程)都在自己的JVM中运行,并具有自己的PID。因此,您的所有耳朵都将出现在同一堆转储中
如果有多个Weblogic服务器实例在同一台机器上运行,那么每个实例都有一个单独的PID和一个单独的进程,正如@josek所说,每个Weblogic服务器都有一个JVM,因此如果您的所有耳朵都在同一个Weblogic服务器下,那么您只有一个PID要转储。但是您可能仍然有多个服务器—可能是一个管理服务器和一个托管服务器,也可能是其他不相关的实例—因此,如果您只是执行类似于
ps-ef | grep java
(我假设这是在Unix上?)的操作,您可能会看到很多PID,即使您可以将其过滤到WebLogic的JDK_主页
识别哪个pid属于特定服务器的一种方法是转到/servers//tmp
目录,并在那里运行fuser-f.lok
。这将列出与该服务器相关的所有进程的PID,其中一个是JVM java进程。(可能是JDBC的其他方法等)找到java进程的一种方法(我相信有人会指出另一种更好的方法!)如下:
cd <domains>/servers/<your server>/tmp
ps -p "`fuser -f <your server>.lok 2>/dev/null`" | grep java
cd/servers//tmp
ps-p“`fuser-f.lok2>/dev/null`”| grepjava
如果每个EAR都在自己的服务器中,我想您必须查看config.xml以了解您需要哪些