2016-09-20 4 views
1

グラフをcactiで描画できるように、OIDを使用してjvmスレッドブロック数の値を取得する必要があります。私は多くを検索しましたが、OID 1.3.6.1.4.1.42.2.145.3.163.1.1.3.10.1.4の後にのみ見つかりました。私はsnmpwalkを試すと、Counter64の値を持つサブOIDを返します。 OID上に私は上記のsnmpwalk場合、それは各スレッドとその遮断値の値を返しjvm用のSNMP OIDとは何ですか?スレッドブロック数

..このスレッドがモニタを入力または再入力するようにブロックされた回数の総数

を表します。しかし、私は指定された時間にブロックされたすべてのスレッドの数を必要とします。どんな助けもありがとう。

答えて

2

このようなカウンタはありません。
利用可能なすべての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 
関連する問題