【问题标题】:What is the SNMP OID for jvm Thread block countjvm 线程块计数的 SNMP OID 是什么
【发布时间】:2016-09-20 09:26:29
【问题描述】:
我需要使用 OID 获取 jvm 线程块计数的值,以便可以使用 cacti 绘制图形。我进行了很多搜索,但只找到了 OID 1.3.6.1.4.1.42.2.145.3.163.1.1.3.10.1.4。当我尝试 snmpwalk 时,它会返回带有 Counter64 值的子 OID。上面的OID代表
该线程阻塞进入或重新进入监视器的总次数..
当我在上面 snmpwalk 时,它返回每个线程的值及其阻塞值。但我想要在指定时间内被阻塞的所有线程的计数。任何帮助将不胜感激。
【问题讨论】:
标签:
java
multithreading
jvm
snmp
【解决方案1】:
根本没有这样的计数器。
列出了所有可用的 JVM OID here。
您可能感兴趣的最接近的 JVM 指标是 sun.rt._sync_ContendedLockAttempts 计数器。
这是从 Java 中获取它的方法:
import sun.management.ManagementFactoryHelper;
import sun.management.counter.Counter;
import java.util.NoSuchElementException;
public class Test {
public static void main(String[] args) {
System.out.println(getContendedLockAttempts());
}
private static long getContendedLockAttempts() {
for (Counter counter : ManagementFactoryHelper.getHotspotRuntimeMBean().getInternalRuntimeCounters()) {
if ("sun.rt._sync_ContendedLockAttempts".equals(counter.getName())) {
return (long) counter.getValue();
}
}
throw new NoSuchElementException();
}
}
或者从命令行:
jcmd {PID} PerfCounter.print | grep sun.rt._sync_ContendedLockAttempts