perf4j提供错误的Count参数

时间:2013-07-27 08:54:00

标签: performance-testing perf4j

我在一个多线程请求处理器应用程序中使用perf4j,该应用程序具有高请求率,部署在jboss app服务器上。
我将它与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 个答案:

答案 0 :(得分:0)

我找到了答案。问题是AsyncCoalescingStatisticsAppender的queueSize。由于我的应用程序中的请求率很高,因此队列容量不足。 我们可以在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>