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>