2014-11-04 47 views
1

我正在使用WLST监控Weblogic 10.3域中所有受管服务器上的Java堆使用情况。我写了一个Jython脚本来实现这一点。该脚本首先登录到域中的管理服务器。以下是获取每个受控服务器堆统计代码片段:监控Weblogic服务器上的Java堆使用情况

def getServerJavaHeap(): 

    domainRuntime() 

    servers=domainRuntimeService.getServerRuntimes() 

    for server in servers: 
     free = int(server.getJVMRuntime().getHeapFreeCurrent())/(1024*1024) 
     freePct = int(server.getJVMRuntime().getHeapFreePercent()) 
     current = int(server.getJVMRuntime().getHeapSizeCurrent())/(1024*1024) 
     max  = int(server.getJVMRuntime().getHeapSizeMax())/(1024*1024) 
     print 'Domain Name     #', cmo.getName() 
     print 'Server Name     #', server.getName()  
     print 'Current Heap Size   #', current 
     print 'Current Heap Free   #', free 
     print 'Maximum Heap Size   #', max 
     print 'Percentage Heap Free   #', freePct 

堆的统计数据,上面的代码获取是从什么WebLogic管理控制台显示不同。例如,对于管理server123

上面的代码给堆大小用法1.25GB而管理控制台显示堆的用法作为3GB

enter image description here

我想知道为什么会出现在什么管理控制台显示的差异和上面代码的输出。我试图确定我是否正在寻找正确的位置并调用正确的方法调用(listed here in the docs)以获取每个受管服务器上的堆统计信息。

我相信脚本运行的时间也是一个因素。想知道管理控制台刷新这些表的频率如何。

回答

1

我看不出你的方法tbh有什么问题。除非您单击表格左上角的自动刷新图标(形成圆圈的两个箭头),否则管理控制台页面将不会自动更新。默认情况下,刷新间隔为10秒,但可以从“首选项”页面设置 - 链接位于每个页面的横幅上。

我在管理服务器和托管服务器上都尝试过,只要我的代码接近刷新,数字就会被绑定。我只能假设在控制台显示数据和脚本运行之间运行垃圾收集。