什么是 jvm 线程块计数的 SNMP OID

What is the SNMP OID for jvm Thread block count

我需要使用 OID 获取 jvm 线程块计数的值,以便可以使用 cacti 绘制图形。我搜索了很多,但只发现了以下 OID 1.3.6.1.4.1.42.2.145.3.163.1.1.3.10.1.4。当我尝试 snmpwalk 时,它 returns 具有 Counter64 值的子 OID。上面的OID代表

The total number of times that this thread has blocked to enter or re-enter a monitor..

当我上面的 snmpwalk 时,它 returns 每个线程的值及其阻塞值。但是我想要在指定时间内被阻塞的所有线程的数量。任何帮助将不胜感激。

根本就没有这样的计数器。
列出了所有可用的 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