2010-11-12 2 views
5

У меня есть многопоточное приложение, которое хорошо масштабируется для начала, но работает на сервере с 16 процессорами, как только я превышу 5 или 6 аппаратных потоков, уровень производительности снижается. I подозревает, что узкое место окружает один из синхронизированных методов. Тем не менее, я должен быть уверен, что это виновный метод, прежде чем начать погружение в код и попытаться заменить алгоритм неблокирующим.Профилирование Java: выяснить, где потоки тратят время заблокировано

Запуск Java с аргументом -Xprof говорит мне, что, как я ожидал, потоки тратят большую часть своего времени на блокировку. Есть ли способ, которым я могу разбить это на то, сколько времени они тратят на блокировку по определенному методу?

ответ

1

http://yourkit.com вид монитора показывает вам, какие классы блокировки горячие, кто держит заблокированные блокировки и разбивку по экземпляру блокировки и стеке вызывающего абонента. 30-дневный оценочный период инструмента.

1

Инструмент jvisualvm, который поставляется вместе с JDK, может немного помочь, хотя его информация профилирования процессора довольно ограничена (больше визуализатора для данных Xprof). Я обычно считаю его более полезным для профилирования памяти.

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

Или вы можете добавить статистический сбор в свой код (например, измерить, сколько времени потребуется для выполнения каждого синхронизированного метода, который вы подозреваете, разбивая его на время, ожидая синхронизации или времени выполнения метода), хотя это намного больше Работа.

1

Не могли бы вы попробуете this method? Если он работает через несколько процессоров, он должен найти проблему, но это большой «если».

В основном, когда вы видите, что поток заблокирован, стек вызовов сообщает вам, почему именно. Если вы не уверены, что видите реальную проблему, сделайте это несколько раз.

0

Eclipse TPTP - еще один очень хороший и бесплатный профайлер.

Смежные вопросы