perf4j предоставил неверный параметр Count

Я использую perf4j в многопоточном приложении-обработчике запросов с высокой частотой запросов, которое развернуто на сервере приложений jboss.
Я использую его с log4j и AsyncCoalescingStatisticsAppender для предоставления статистических данных времени выполнения. это частичный файл log4j.xml:

<appender name="timeFileAppender" class="org.apache.log4j.RollingFileAppender">
    <param name="file" value="C:\\JavaEE\\JCATestLog\\TimeInfo.log"/>
    <param   name = "MaxFileSize"    value = "15000KB"/>
    <param   name = "MaxBackupIndex" value = "10" />
    <param name="Append" value="true"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %c{1}:%L - %m%n"/>
    </layout>
</appender>

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

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

Моя проблема в том, что параметр Count в результате не равен точному количеству запросов. например, в тесте я отправляю запрос 10000, но записываемый в файл журнала параметр Count равен 9560.
Есть ли какой-нибудь гид?

1 ответ

Решение

Я нашел ответ. Проблема была в очереди размера AsyncCoalescingStatisticsAppender. Из-за высокой частоты запросов в моем приложении емкость очереди была недостаточной. Мы можем установить размер очереди в log4j.xml следующим образом:

<appender name="CoalescingStatistics"
          class="org.perf4j.log4j.AsyncCoalescingStatisticsAppender">
    <param name="TimeSlice" value="10000"/>
    <param name="QueueSize" value="100000"/>
    <appender-ref ref="timeFileAppender"/>
</appender>
Другие вопросы по тегам