2013-07-27 4 views
0

jboss 응용 프로그램 서버에 배포되는 높은 요청 속도를 가진 다중 스레드 요청 프로세서 응용 프로그램에서 perf4j를 사용합니다.
런타임 통계 데이터를 제공하기 위해 log4j 및 AsyncCoalescingStatisticsAppender와 함께 사용합니다. 이것은 부분 log4j.xml 파일입니다 :perf4j가 잘못된 Count 매개 변수를 제공합니다.

<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>