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

时间:2017-09-07 17:49:57

标签: java cpu-load

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

我终于找到了造成这个问题的原因。万一其他人遇到这个:

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