我想使用WLST获取WL域中服务器的Max Perm Gen和Usage。 到目前为止,我能够看到从JMX获取信息,mBean。 mBean位置是“java.lang:Location = Server1,name = PS Perm Gen,type = MemoryPool”
我尝试了下面的代码,但似乎没有用。
testObject=ObjectName('java.lang:Location=Server1,name=PS Perm Gen,type=MemoryPool')
或尝试下面的代码也不起作用。
testBean=getMBean('javax.management.openmbean.CompositeData:Location=Server1,name=Usage,type=PS Perm Gen')
for item in testBean:
print item.getKey() + ':' + item.getValue()
请帮忙。
更新:--------------------------------------------- ---- 感谢您的快速答复。还没有与我的主题相关的WLST代码,因为我正在尝试探索搜索的可能性。
基本上,我正在尝试在将一个人工制品部署到WL托管服务器之前检查WLST运行中的可用Perm Gen大小。
这是因为WebLogic没有从WL托管服务器中释放未部署的artefact的非堆内存空间,如果您继续进行部署/取消部署而不进行回收,则WL托管服务器最终会抛出Om的Perm Gen空间。
我们正在尽量减少服务中断,并尽可能长时间地保持WL托管服务器的运行。 我已经搜索了WLST mBean树位置的所有地方以获取非堆内存状态但是失败了。
但是如果你使用JManage,你可以通过mBean对象获取非堆内存状态“java.lang:Location = Server1,name = PS Perm Gen,type = MemoryPool”。
它将在JManage中显示如下:
Object Name java.lang:Location=Server1,name=PS Perm Gen,type=MemoryPool
Class Name sun.management.MemoryPoolImpl
Description Information on the management interface of the MBean
Configured Name Add to Application
所以我想知道为什么如果mBean在那里,从WLST中提取mBean信息是不可能的?因此,我正在努力寻求有类似经历/情况的人的帮助。
答案 0 :(得分:1)
我发现您可以连接到托管服务器,然后使用以下内容:
permObjectName=ObjectName('java.lang:type=MemoryPool,name=PS Perm Gen')
usoPerm=mbs.getAttribute(permObjectName,'Usage')
usoPerm.get('max') #Returns MaxPermSize in bytes
usoPerm.get('used') #Returns used Perm Space in bytes
但是,我已经在多个服务器上对此进行了测试,并且它并不总是有效,因为MBeanServer(mbs)无法看到' " java.lang" mbean tree。
答案 1 :(得分:0)
Weblogic具有不同用途的mbean层次结构。它将所有非weblogic mbeans视为" custom",因此它们位于" custom"树。 https://docs.oracle.com/cd/E24329_01/web.1211/e24415/understandwls.htm#JMXCU239
要获得您所连接的机器的permgen使用情况:
cd('custom:/java.lang/java.lang:type=MemoryPool,name=PS Perm Gen')
permgen=get("Usage").get("used")
如果您已连接到域管理员并希望获取其他服务器的信息:
cd('domainCustom:/java.lang/java.lang:Location='+servername+',name=PS Perm Gen,type=MemoryPool')
permgen=get("Usage").get("used")