Java Web App имеет высокий коэффициент использования процессора

Я новичок здесь, и я не очень хорош в потреблении процессора и многопоточности. Но мне было интересно, почему мое веб-приложение потребляет слишком много ресурсов процессора? Моя программа обновляет значения в фоновом режиме, чтобы пользователям не приходилось ждать обработки данных, а получать их нужно только по запросу. Процессы обновления являются запланированными задачами с использованием библиотеки executor, которая запускает 8 потоков каждые 5 секунд для обновления моих данных.

Теперь мне интересно, почему мое приложение потребляет слишком много ресурсов процессора. Это из-за плохого кода или из-за низкой спецификации сервера? (2 ядра с 2 базами данных и 1 основное приложение, запущенное с моим веб-приложением)

Большое спасибо за Вашу помощь.

2 ответа

Паула,

Кто-то здесь не может сказать, является ли проблема в том, что ваш код неэффективен или сервер не соответствует спецификации. Это может быть и то, и другое, или что-то еще.

Вам нужно будет провести собственное исследование:

  • Профилируйте код. Это позволит вам определить, где ваше веб-приложение проводит большую часть своего времени.

  • Посмотрите на статистику уровня ОС, которая доступна для вас. Это может сказать вам, что реальная проблема - использование памяти или дисковый ввод-вывод.

  • Посмотрите на производительность внутренней базы данных. Это использует много процессора?

После того как вы определили области, в которых используется процессор, вам необходимо выяснить, какова реальная причина проблемы, и решить, как ее устранить. И после того, как вы реализовали потенциальное исправление, вы можете повторно запустить профилирование и т. Д., Чтобы увидеть, что оно помогло.

Вам нужно профилировать свое приложение, чтобы узнать, где процессор фактически потребляется. В Java встроены некоторые базовые методы профилирования, или, если ваша среда это позволяет, вы можете запустить встроенный компилятор "hprof":

java -Xrunhprof...

(На самом деле, вы, вероятно, хотите установить некоторые дополнительные параметры: Google "hprof" для более подробной информации.)

Последнее проще в принципе, но я упоминаю о возможности добавления вашей собственной процедуры профилирования, потому что она более гибкая, и вы можете сделать это, например, в среде сервлетов, где запуск другого профилировщика является более громоздким.

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