OperatingSystemMXBean.getSystemCpuLoad не работает при запуске в качестве службы

У нас есть раздел кода, который должен отслеживать загрузку процессора. Мы получаем нагрузку на процессор с помощью следующей строки кода:

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

Во время тестирования это работает нормально.

При развертывании на Windows Server 2012, работающем в качестве службы, getSystemCpuLoad всегда возвращает -1.

Если мы остановим службу и запустим ее как приложение (все еще на компьютере с Windows Server 2012), он снова заработает.

Я посмотрел на различия между классами и переменными окружения и не нашел никаких расхождений.

Кто-нибудь имеет представление о том, почему getSystemCpuLoad работает при запуске в приложении, а не в качестве службы?

1 ответ

Решение

Я наконец-то нашел причину проблемы. В случае, если кто-то еще сталкивается с этим:

Мне нужно было добавить пользователя, который работает, в группу "Пользователи журнала производительности". Как только он был добавлен здесь, я смог загрузить системный процессор.

Другие вопросы по тегам