2

Jboss JVM (%cpu 使用率、メモリなど) で実行されているプロセスとスレッドに関する情報を取得するアプリを Java で作成したいと考えています。また、JVM (JBoss) でのメモリ使用量やその他の重要事項に関する情報も見つけたいと考えています。純粋なJavaでそれを書く方法は?

JConsole などについては知っていますが、自分で作成する必要があります。システム、メモリなどに関する情報を提供する java.lang.managament インターフェイスを見つけましたが、必要な情報がすべて提供されているわけではありません。たとえば、すべてのスレッドで使用されている CPU 使用率 (CPU 時間ではなく) とメモリを読み取る機会が必要です。(bash の top コマンドのようなものですが、Java で作成する必要があります)。

何か助けはありますか?

編集:最終的に、いくつかのライブラリを使用してこの情報を取得できます。

4

3 に答える 3

0

JBoss AS 7 はさまざまな管理インターフェースを提供します。Detyped Management 表現 (jboss-dmr) に基づくすべての管理インターフェース。

jboss-dmr ライブラリと jboss-as-controller-client を使用してカスタム Java クライアントを実装できます。例については、github リポジトリを参照してください。

JVM などに関する情報を取得するには、次の操作を実装する必要があります。

ModelNode operation = new ModelNode();
operation.get("operation").set("read-resource");
operation.get("recursive").set(true);
operation.get("include-runtime").set(true);
ModelNode address = operation.get("address");
address.add("core-service", "platform-mbean");

または、PlatformMBeanServer を使用することもできます。

    //Get a connection to the JBoss AS MBean server on localhost
    String host = "localhost";
    int port = 9999;  // management-native port
    String urlString = "service:jmx:remoting-jmx://" + host + ":" + port;
    JMXServiceURL serviceURL = new JMXServiceURL(urlString);
    JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceURL, null);
    MBeanServerConnection connection = jmxConnector.getMBeanServerConnection();

    //Invoke on the JBoss AS MBean server
    connection.getObjectInstance(new ObjectName("java.lang:type=Threading"));
    //...
    jmxConnector.close();
于 2012-11-09T22:46:31.097 に答える
0

Adam が述べたように、java/jboss リソースの使用を監視するツールはいくつかあります。もう 1 つはJBoss RHQです。

しかし、本当に自分でプログラムする必要がある場合は、jboss.system:type=ServerInfo mbean にアクセスすることで役立つ情報が見つかるかもしれません (その属性とメソッドを確認してください: listMemoryPools、listThreadCpuUtilization、listThreadDump ...)。これらには、JMX コンソールを使用するか、プログラムでアクセスできます。

于 2012-11-08T21:39:44.720 に答える
0

Java Melody を試すことができます。Java アプリケーションを監視するための非常に優れたツールです。以下のリンクでツールをチェックしてください

https://code.google.com/p/javamelody/

-Sushitha

于 2013-07-18T06:51:21.190 に答える