Предоставление JMX статистики производительности perf4j не работает
Я пытаюсь выставить статистику производительности, сгенерированную perf4j в JMX, используя org.perf4j.logback.JmxAttributeStatisticsAppender
appender, но это не работает.
Ниже приводится соответствующая часть моего logback.xml
<appender name="fileAppender" class="ch.qos.logback.core.FileAppender">
<file>${catalina.base}/logs/perfStats.log</file>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="perf4jJmxAppender" class="org.perf4j.logback.JmxAttributeStatisticsAppender">
<param name="TagNamesToExpose" value="Import"/>
<param name="NotificationThresholds" value="ImportMax(<10)"/>
</appender>
<appender name="CoalescingStatistics"
class="org.perf4j.logback.AsyncCoalescingStatisticsAppender">
<param name="TimeSlice" value="1000"/>
<appender-ref ref="fileAppender"/>
<appender-ref ref="perf4jJmxAppender"/>
</appender>
<logger name="org.perf4j.TimingLogger" additivity="false">
<level value="INFO"/>
<appender-ref ref="fileAppender"/>
<appender-ref ref="CoalescingStatistics"/>
</logger>
Как вы заметили, я добавляю статистику производительности, сгенерированную AsyncCoalescingStatisticsAppender
как для fileAppender
а также perf4jJmxAppender
, Файл perfStats.log получает следующую строку...
Tag Avg(ms) Min Max Std Dev Count
Import 667.0 667 667 0.0 1
... но jconsole показывает все 0 против ImportMean, ImportMax, ImportMin и т. д.
Что я делаю неправильно?
1 ответ
В CoalescingStatistics значение TimeSlice установлено равным 1000 (1 с), поэтому в JMX вы увидите только последнюю секунду.
Попробуйте увеличить это значение и посмотрите, поможет ли это.