WebLogic中,JVM和EAR
题
我打算做JMAP JDK1.5工具堆转储在生产的WebLogic(10)实例。
其实有3 EAR(也许更多,真的不知道我没有访问)部署在此WebLogic实例。
有人告诉我“的WebLogic每个EAR创建一个JVM” 有人可以证实?
使用JMAP我需要的JVM PID作为参数来完成堆转储... 因为我有3个EAR我想我有3 PID所以我不知道如何知道哪个PID对应于EAR JVM?
解决方案
都能跟得上 - 每个WebLogic服务器(或任何java程序)运行在它自己的JVM与它自己的PID。因此,所有你的耳朵会出现在同一个堆转储。
如果你具有相同的机器上运行多个Weblogic服务实例,每个实例将有一个单独的PID和一个单独的过程
其他提示
由于@josek说,你必须每一个JVM的WebLogic服务器,因此,如果您所有的耳朵都在同一WebLogic服务器下you'l只有一个PID倾倒。但你仍然可以有多个服务器 - 也许一个管理服务器和管理服务器,也许其他无关的情况下 - 所以,如果你只是做类似ps -ef | grep java
(?我假设这是在Unix上),你可以看到很多的PID,甚至如果你可以把它过滤到您的WebLogic的JDK_HOME。
识别哪个PID属于特定服务器的一种方法是去<domains>/servers/<your server>/tmp
目录,并在那里运行fuser -f <your server>.lok
。这将列出所有与该服务器,其中之一将是JVM的java程序进程的PID。 (可能是其他公司的JDBC等)的一种方法找到刚才java程序(!我敢肯定有人会指出另一种更好的方法)是这样的:
cd <domains>/servers/<your server>/tmp
ps -p "`fuser -f <your server>.lok 2>/dev/null`" | grep java
如果每个EAR是在它自己的服务器,我想你一定要看config.xml中看到你所需要的。