OperatingSystemMXBean.getSystemCpuLoad 在 运行 作为服务时不起作用

OperatingSystemMXBean.getSystemCpuLoad doesn't work when run as service

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

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

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

部署到 2012 Windows 服务器时,运行作为服务,getSystemCpuLoad 总是returns -1。

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

我查看了类路径差异和环境变量差异,没有发现任何差异。

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

我终于找到了导致问题的原因。如果其他人 运行 喜欢这个:

我必须将服务为 运行 的用户添加到 "Performance Log Users" 组。一旦它被添加到这里,我就能够获得系统 CPU 负载。