我们有一段需要监控CPU负载的代码。我们通过以下代码行获得CPU负载:
((com.sun.management.OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean()).getSystemCpuLoad();
在测试期间,这样可以正常工作。
当部署到2012 Windows Server,作为服务运行时,getSystemCpuLoad始终返回-1。
如果我们停止服务并将其作为应用程序运行(仍在2012 Window Server计算机上),它将再次运行。
我查看了类路径差异和环境变量差异,但未发现任何差异。
有没有人知道为什么getSystemCpuLoad在应用程序中运行而不是作为服务运行?
答案 0 :(得分:1)
我终于找到了造成这个问题的原因。万一其他人遇到这个:
我必须将运行该服务的用户添加到" Performance Log Users"组。一旦添加到这里,我就可以获得系统CPU负载。