Вы использовали Perf4J, чтобы собрать и проанализировать метрики производительности в приложении Java? [закрытый]

21
задан topchef 30 January 2010 в 16:50
поделиться

2 ответа

Я лично использую PORO почти во всем, что пишу, что не является полным скриптом броска.

Я часто создаю тип владельца данных класса, который будет управлять и содержать несколько объектов моего конкретного типа и включать некоторые вспомогательные методы. Я нахожу это удобным для, когда кто-то другой также должен работать с моим кодом.

Я думаю, что этот вопрос очень субъективен в том смысле, что нет ответа, который всегда правильный. Иногда просто передать назад массив хорошо, и нет необходимости создавать дополнительный класс. Иногда дополнительный уровень абстракции делает что-то гораздо более понятным для пользователя.

-121--3357733-

Наш сценарий msbuild запускается из командной строки Visual Studio x86. При использовании этого синтаксиса он не считывает 64-разрядный реестр. Существует другой синтаксис, который позволит x86 считывать 64-битный реестр?

-121--4632010-

Я использовал Perf4J и в конечном итоге бросил его, потому что уже использовал Spring AOP. Я бы хотел просто интегрировать два, но имел проблемы с этим (из-за Perf4J аппендеров).

Я пытался использовать Perf4j через аннотации и AOP без JMX. Производственный cfg можно обрабатывать с помощью файлов конфигурации.

В целом, мне понравился Perf4j подход, но поскольку я уже использовал Spring для мониторинга производительности, мне не требовалось perf4j. Одна вещь, которую Perf4j дает бесплатно, это min/max/standard dev; с другими губами вы должны будете делать математику самостоятельно.

Я вещь perf4j хороша, если у вас нет никакого другого lib, который может, обеспечиваю перехват (aspectJ или AOP), но так как у меня уже была весна, было легче осуществить исполнительное измерение. Свойства компонента можно легко раскрыть с помощью JMX с помощью Spring.

3
ответ дан 29 November 2019 в 21:52
поделиться

Я использую Perf4J в клиент-серверном приложении для синхронизации вызовов RPC. Это было довольно просто реализовать: Мне нужно было включить всего несколько строк кода вокруг сервлета диспетчера RPC для измерения каждого вызова метода RPC. Измерения времени записываются в отдельный файл журнала, агрегированные данные хранятся в памяти для использования сервлетом построения графиков. Настройка заняла несколько минут.

Это выдержка из метода preHandle():

request.setAttribute("stopWatch", new CommonsLogStopWatch());

Это код из метода postHandle():

LoggingStopWatch stopWatch = (LoggingStopWatch)request.getAttribute("stopWatch");
stopWatch.stop(methodName);

Вот соответствующие разделы моего log4j.cfg:

<logger name="org.perf4j.TimingLogger" additivity="false">
    <level value="info"/>
    <appender-ref ref="CoalescingStatistics"/>
    <appender-ref ref="statsAppender"/>
</logger>

<appender name="CoalescingStatistics"
          class="org.perf4j.log4j.AsyncCoalescingStatisticsAppender">
    <param name="TimeSlice" value="60000"/>
    <appender-ref ref="graphPatientChart"/>
</appender>

<appender name="graphPatientChart"
          class="org.perf4j.log4j.GraphingStatisticsAppender">
    <param name="GraphType" value="Mean"/>
    <param name="TagNamesToGraph" value="getPatientChart,idleNotification"/>
</appender>

<appender name="statsAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="datePattern" value="'.'yyyy-MM-dd"/>
    <param name="file" value="WEB-INF/log/meona-performance.log"/>
    <param name="append" value="true"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%m%n"/>
    </layout>
</appender>

Я бы хотел, чтобы сервлет для построения графиков был более интерактивным: Было бы неплохо, если бы я мог выбирать теги, которые будут включены в график. Встречалось ли вам приложение с пользовательским интерфейсом, которое можно использовать для анализа журналов измерения времени?

7
ответ дан 29 November 2019 в 21:52
поделиться
Другие вопросы по тегам:

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