Websphere wsadmin getStatsObject未返回JVM运行时的所有指标

Websphere wsadmin getStatsObject未返回JVM运行时的所有指标,websphere,jython,wsadmin,Websphere,Jython,Wsadmin,我正在编写一个jython脚本,它返回JVMRuntimeModule的性能指标。它将返回以下内容: HeapSize、FreeMemory、UsedMemory、正常运行时间、ProcessCpuUsage 但不是以下内容:GCCount、GCIntervalTime、GCTime、ObjectAllocateCount、ObjectFreedCount、ThreadStartedCount、ObjectMovedCount、WaitsForLockCount、ThreadEndedCount

我正在编写一个jython脚本,它返回JVMRuntimeModule的性能指标。它将返回以下内容:

HeapSize、FreeMemory、UsedMemory、正常运行时间、ProcessCpuUsage

但不是以下内容:GCCount、GCIntervalTime、GCTime、ObjectAllocateCount、ObjectFreedCount、ThreadStartedCount、ObjectMovedCount、WaitsForLockCount、ThreadEndedCount、WaitForLockTime

我怎样才能把它们全部退回呢

    type = sys.argv[0]    # "JVM"
    name = sys.argv[1]    # "JVM"
    process = sys.argv[2] # "MyServer"

    objectName = "WebSphere:name=%s,process=%s,type=%s,*" % (name, process, type)
    perfName = AdminControl.completeObjectName("type=Perf,process=%s,*" % process)
    perfOName = AdminControl.makeObjectName(perfName)
    sigs = ['javax.management.ObjectName', 'java.lang.Boolean']
    coName = AdminControl.completeObjectName (objectName)
    params = [AdminControl.makeObjectName (coName), java.lang.Boolean ('false')]
    jvmObj=AdminControl.invoke_jmx (perfOName, 'getStatsObject', params, sigs)
    jvmStats = jvmObj.getStatistics()
    print jvmStats
jvmStats只包含HeapSize、FreeMemory、UsedMemory、正常运行时间、ProcessCpuUsage

输出:

array([name=HeapSize, ID=1, description=The total memory (in KBytes) in the Java virtual machine run time., unit=KILOBYTE, type=BoundedRangeStatistic, lowWaterMark=262144, highWaterMark=524288, current=523264, integral=7.8067724096E10, lowerBound=262144, upperBound=524288, 
name=FreeMemory, ID=2, description=The free memory (in KBytes) in the Java virtual machine run time., unit=KILOBYTE, type=CountStatistic, count=89475, 
name=UsedMemory, ID=3, description=The amount of used memory (in KBytes) in the Java virtual machine run time., unit=KILOBYTE, type=CountStatistic, count=433788, 
name=UpTime, ID=4, description=The amount of time (in seconds) that the Java virtual machine has been running., unit=SECOND, type=CountStatistic, count=2421377, 
name=ProcessCpuUsage, ID=5, description=The CPU Usage (in percent) of the Java virtual machine., unit=N/A, type=CountStatistic, count=0], com.ibm.ws.pmi.stat.StatisticImpl)

我希望所有这些都能归还。

我对这方面不太熟悉,但我看到了一些东西需要看:

1) 其中一些统计数据仅在启用JVM评测时可用(如前所述)。例如,添加一个通用JVM参数:
-agentlib:pmiJvmtiProfiler
。请参阅管理控制台中的操作说明

2) JVM统计数据嵌套在树结构中(请参阅),因此您可以添加以下行:

print jvmObj.getSubStats()
查看嵌套的统计信息。如果您在管理控制台中转到PMI->server,然后单击面板中的Custom链接以获得显示所有PMI设置的树状控件,也可以看到此结构


3) 当然,您必须启用PMI统计数据(从PMI->server等),但我猜您已经启用了。

除了Scott的答案之外,还可以根据启用的PMI级别使用不同的统计数据。请参阅此处JVM计数器的“级别”列:


一般来说,最好使用“自定义”级别,并准确配置您想要获得最佳性能的指标。

我认为我们没有启用JVM评测。这就解释了。启用时,它会对JVM的性能产生任何影响吗?@fshimaya我们没有这样粒度级别的基准测试,因此您需要对它进行基准测试。我知道的唯一PMI基准是PMI Basic(默认启用)为2-3%