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 负载。
我们有一段代码需要监控CPU负载。我们使用以下代码行获得 CPU 负载:
((com.sun.management.OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean()).getSystemCpuLoad();
在测试期间,这工作正常。
部署到 2012 Windows 服务器时,运行作为服务,getSystemCpuLoad 总是returns -1。
如果我们停止该服务并将其运行 作为应用程序(仍在 2012 Window 服务器计算机上),它会再次运行。
我查看了类路径差异和环境变量差异,没有发现任何差异。
有谁知道为什么 getSystemCpuLoad 在 运行在应用程序中而不是作为服务时起作用?
我终于找到了导致问题的原因。如果其他人 运行 喜欢这个:
我必须将服务为 运行 的用户添加到 "Performance Log Users" 组。一旦它被添加到这里,我就能够获得系统 CPU 负载。