2013-07-27 20 views
0

我在多線程請求處理器應用程序中使用perf4j,並在jboss應用服務器上部署了高請求率。
我使用log4j和AsyncCoalescingStatisticsAppender來提供運行時統計數據。這是部分log4j.xml文件:perf4j提供了錯誤的計數參數

<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.
有沒有指導?

回答

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> 
相關問題