Websphere wsadmin getStatsObject未返回JVM运行时的所有指标
我正在编写一个jython脚本,它返回JVMRuntimeModule的性能指标。它将返回以下内容: HeapSize、FreeMemory、UsedMemory、正常运行时间、ProcessCpuUsage 但不是以下内容:GCCount、GCIntervalTime、GCTime、ObjectAllocateCount、ObjectFreedCount、ThreadStartedCount、ObjectMovedCount、WaitsForLockCount、ThreadEndedCount、WaitForLockTime 我怎样才能把它们全部退回呢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
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%