4

我们有一段代码需要监控 CPU 负载。我们使用以下代码行获取 CPU 负载:

((com.sun.management.OperatingSystemMXBean) ManagementFactory
  .getOperatingSystemMXBean()).getSystemCpuLoad();

在测试期间,这工作正常。

当部署到作为服务运行的 2012 Windows Server 时,getSystemCpuLoad 始终返回 -1。

如果我们停止服务并将其作为应用程序运行(仍在 2012 Window Server 机器上),它会再次运行。

我查看了类路径差异和环境变量差异,找不到任何差异。

有谁知道为什么 getSystemCpuLoad 在应用程序中运行而不是作为服务运行时有效?

4

1 回答 1

4

我终于找到了导致问题的原因。万一其他人遇到这种情况:

我必须将服务正在运行的用户添加到“性能日志用户”组中。一旦它被添加到这里,我就能够获得系统 CPU 负载。

于 2017-09-13T15:11:22.020 回答