OperatingSystemMXBean.getSystemCpuLoad не работает при запуске в качестве службы
У нас есть раздел кода, который должен отслеживать загрузку процессора. Мы получаем нагрузку на процессор с помощью следующей строки кода:
((com.sun.management.OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean()).getSystemCpuLoad();
Во время тестирования это работает нормально.
При развертывании на Windows Server 2012, работающем в качестве службы, getSystemCpuLoad всегда возвращает -1.
Если мы остановим службу и запустим ее как приложение (все еще на компьютере с Windows Server 2012), он снова заработает.
Я посмотрел на различия между классами и переменными окружения и не нашел никаких расхождений.
Кто-нибудь имеет представление о том, почему getSystemCpuLoad работает при запуске в приложении, а не в качестве службы?
1 ответ
Я наконец-то нашел причину проблемы. В случае, если кто-то еще сталкивается с этим:
Мне нужно было добавить пользователя, который работает, в группу "Пользователи журнала производительности". Как только он был добавлен здесь, я смог загрузить системный процессор.