Если у Вас есть JAVA-приложение, которое использует ЦП, когда он ничего не делает, как Вы определяете то, что он делает?

изменить «mysql» на «mysqli» в файле database.php

$db['default']['dbdriver'] = 'mysqli';
12
задан Jason Plank 17 October 2011 в 11:59
поделиться

8 ответов

При использовании Java 5 или позже можно соединиться с приложением с помощью jconsole для просмотра всех рабочих потоков. jstack также сделает дамп стека. Я думаю, что это должно все еще работать даже в контейнере как Tomcat.

Оба из этих инструментов включены с JDK5 и позже (я принимаю потребности процесса быть, по крайней мере, Java 5, хотя я мог быть неправым),

Обновление: также стоит отметить, что запуск с JDK 1.6 обновляет 7 существует теперь связанный профилировщик под названием VisualVM, который может быть запущен с 'jvisualvm'. Похоже, что это - проект java.net, таким образом, дополнительная информация может быть доступной на уровне той страницы. Я еще не использовал это, но это выглядит полезным для более серьезного анализа.

Надежда, которая помогает

15
ответ дан 2 December 2019 в 05:29
поделиться

При направлении с той же проблемой я использовал профилировщика YourKit. Это - загрузчик, не активируется, если Вы на самом деле не соединяетесь с ним (хотя это действительно открывает порт для прислушиваний к соединениям). У профилировщика самостоятельно есть хорошее, "потратили количество времени в каждом методе", в то время как работа в он - менее навязчивый режим.

Иначе должен обнаружить загрузку ЦП (через JNI, таким образом, Вам была бы нужна внешняя библиотека для этого) в "сторожевом" потоке с самым высоким приоритетом, и начните регистрировать все потоки, когда ЦП достаточно высок в течение достаточно долгого времени. Вы могли бы найти это просвещение статьи.

6
ответ дан 2 December 2019 в 05:29
поделиться

Задержка управления полетом JRockit Анализатор.

Анализатор Задержки, который идет с JRockit, показывает Вам, что "делает" JVM, когда это ничего не делает. В последней версии Вы видите задержки для:

  • Java ожидает/блокирует/спит/паркует.
  • Файловый ввод-вывод
  • Сетевой ввод-вывод
  • Выделение памяти
  • Паузы GC
  • Задержки JVM, например, генерация кода и загрузка класса
  • Приостановка потока

Инструмент даст Вам отслеживание стека, когда задержка произошла. Можно просмотреть данные задержки по-разному (агрегированные трассировки, как гистограмма, в графике потока и т.д.). Инструмент также позволяет Вам видеть переходы между потоками, например, когда один поток уведомляет другого.

задержка анализатор http://blogs.oracle.com/hirt/WindowsLiveWriter/The.0LatencyAnalyserMigratedfromtheoldBE_7246/latency_graph_2.png

Издержки незначительны, и в отличие от многих других инструментов они могут использоваться в продуктивной среде. Это сообщение в блоге дает Вам, краткое введение и программа могут быть загружены здесь.

Это свободно использовать для разработки!

2
ответ дан 2 December 2019 в 05:29
поделиться

Если это для профессиональной цели, и у Вас есть немного денег, чтобы потратить, попытаться достать JProfiler. Если Вы просто хотите получить некоторое понимание, испытайте Плагин Профилировщика Eclipse. Я несколько раз использовал его, но я не знаю текущее состояние.

Новый (?) проект из самого проекта затмения доступен также: http://www.eclipse.org/tptp/ (См. эту статью). Никогда не использовал его, таким образом, я не могу сказать, стоит ли это усилия.

Существует также очень хороший список профилировщиков с открытым исходным кодом, доступных по http://www.manageability.org/blog/stuff/open-source-profilers-for-java

2
ответ дан 2 December 2019 в 05:29
поделиться

Для пользы полноты: даже при том, что моя компания более или менее стандартизирует на Eclipse, мы используем Netbeans (6 и) с его включенным, свободным профилировщиком ежедневно. Это работает лучше, чем плагин TPTP Eclipse (в последний раз проверил 3 месяца назад), и для нас это устраняет любую необходимость коммерческого профилировщика, такого как JProfiler, который превосходен, но быстро становление ненужным.

0
ответ дан 2 December 2019 в 05:29
поделиться

Используйте профилировщика. Да они стоят денег, и использование их может иногда быть немного неловким, но они действительно предоставляют Вам гораздо больше вещественные доказательства, а не догадки.

Люди универсально плохи при предположении, где узкие места производительности. Это просто, кажется, что-то, что наши мозги не являются сборкой, чтобы сделать очень хорошо. Это может казаться очевидным, у Вас могут быть прекрасные идеи о том, какова проблема, но реальный мир часто оказывается выполнением чего-то другого. И оптимизация неправильной части средств кода, в лучшем случае большой работы для минимального преимущества. Чаще это делает вещи медленнее, и иногда это повреждает вещи полностью. Таким образом, перед внесением любых изменений ради оптимизации у Вас должны всегда быть вещественные доказательства от профилировщика или другого точного инструмента.

Как упомянуто, и JProfiler и YourKit являются и довольно хорошими и не непомерно дорогими. В прошлый раз, когда я смотрел, у них обоих были бесплатные демо-версии также.

1
ответ дан 2 December 2019 в 05:29
поделиться

Если JConsole не может использоваться, Вы можете

  • нажмите CTRL+BREAK в соответствии с Windows
  • отправить kill -3 <process id> в соответствии с Linux

получить полный Дамп Потока. Это не влияет на производительность и может всегда выполняться в производстве.

2
ответ дан 2 December 2019 в 05:29
поделиться

VisualVM должен быть профилировщиком от netbeans как автономным. Я попробовал TPTP за затмение, но visualVm кажется как намного более хорошая опция!

0
ответ дан 2 December 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: