【问题标题】:Windows performance counters from java来自 java 的 Windows 性能计数器
【发布时间】:2014-07-30 19:35:26
【问题描述】:

我正在寻找一种从 Java 程序中的 Windows 性能监视器获取性能计数器的方法。我知道在 .NET 或 PowerShell 中获取此计数器非常容易。谁知道在 Java 中可以吗?

【问题讨论】:

  • 这个问题在 2020 年与 2014 年写的时候一样重要。我刚刚在当前的单一答案中添加了一条评论,解释了为什么它似乎不是当前的“正确”答案。所以我很想听听其他人是否有其他解决方案。

标签: java windows performancecounter


【解决方案1】:

Access Windows Performance Monitor counters from Java:

“对于那些运行 Java 应用程序或服务的人来说,Windows 性能监视器 (WPM) 包含了宝贵的信息宝库 — 参见图 1。有数百(或数千)个称为计数器的性能统计信息可以实时使用,并且衡量关键系统性能因素。本文概述了一种从 Java 访问这些性能统计数据的简单方法。"

提供了三个选项:

  1. 配置 WPM 以记录特定的性能计数器:WPM 可以采用一组可配置的计数器,并以配置的频率将它们记录到文件中。 Windows XP 和 Windows 2003 还允许将 WPM 数据直接记录到 ODBC(开放式数据库连接)数据源。将此数据记录到最终目的地后,使用 java.io 或 java.nio 包读取日志文件应该很简单。
  2. WPM 的本机(Java 本机接口)接口
  3. NSClient4j 是一个纯 Java 客户端,它提供了一个用于访问 WPM 性能计数器数据的简单 API。它使用称为 NSClient 的 Windows 服务。

推荐的方法似乎是选项 3 ...

【讨论】:

  • FWIW,至于“推荐方法”(来自引用的 2004 年文章),使用 NSClient4j 库,(nsclient.ready2run.nl)不再可用(正如我在 2020 年写的那样)。虽然我们可以通过archive.org 等找到该站点和代码,但我不禁认为它已经过时了。很想听听是否有更好的选择。 (引用文章中没有详细说明JNI,使用日志当然不是从Java直接连接获取perfmon计数器。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多