2013-04-24 115 views
2

我正在用JMeter執行媒體服務器的負載測試。我已經編寫了自定義採樣器,可以擴展AbstractJavaSamplerClient。對於我正在使用log4j的日誌記錄(只使用一個rootCategory appender)。JMeter負載測試期間的原因不明記錄問題

  • 當線程組中的線程數量相對較少(小於800)時 - 一切正常。
  • 當線程組中的線程數量相對較大(大於1400)時 - 發生了一些不明原因的日誌記錄問題。

可以考慮兩種情況。在第一種情況下,使用ConsoleAppender,在第二種情況下使用FileAppender

  • 在第一種情況下,日誌文件突然終止。但是,測試計劃已成功執行,並且JMeter日誌(jmeter.log)也可以正常終止。沒有異常拋出。

  • 在第二種情況下,日誌文件也被突然終止,但它的原因是可以理解的:

    log4j:ERROR Failed to flush writer,java.io.IOException: File too large 
        at java.io.FileOutputStream.writeBytes(Native Method) 
        at java.io.FileOutputStream.write(FileOutputStream.java:318) 
        at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221) 
        at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291) 
        at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295) 
        at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141) 
        at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229) 
        at org.apache.log4j.helpers.QuietWriter.flush(QuietWriter.java:59) 
        at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:324) 
        at org.apache.log4j.WriterAppender.append(WriterAppender.java:162) 
        at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251) 
        at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66) 
        at org.apache.log4j.Category.callAppenders(Category.java:206) 
        at org.apache.log4j.Category.forcedLog(Category.java:391) 
        at org.apache.log4j.Category.debug(Category.java:260) 
        at com.nsacdn.common.AbstractHTTPDownloader.downloadChunk(Unknown Source) 
        at com.nsacdn.common.AbstractHTTPDownloader.downloadAllChunks(Unknown Source) 
        at com.nsacdn.hls.HlsDownloader.download(Unknown Source) 
        at com.nsacdn.common.DownloadSampler.runTest(Unknown Source) 
        at org.apache.jmeter.protocol.java.sampler.JavaSampler.sample(JavaSampler.java:191) 
        at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:428) 
        at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) 
        at java.lang.Thread.run(Thread.java:722) 
    

但是日誌文件的大小是相當小 - 小於10米有硬盤上的剩餘空間不足。我正在Ubuntu 12.04 x64上運行測試。 /etc/security/limits.conf中的文件大小沒有限制(默認情況下,在此操作系統中沒有文件大小限制,據我瞭解)。

我試着模擬日誌過程。我寫了一個簡單的應用程序,它創建了2000個並行線程,它們使用相同的log4j配置在日誌中完全寫入大約70M。此應用在目標機器上正常工作。

最後,我已將FileAppender替換爲RollingFileAppender,並將日誌文件大小的限制設置爲2 M.在這種情況下,日誌記錄過程正確執行。

ConsoleAppender和FileAppender的奇怪行爲是如何解釋的?
有什麼建議嗎?

回答

0

我會檢查JMeter應用程序本身的日誌文件。 JMeter具有它用於記錄信息(來自監聽器)的日誌文件,JMeter有一個用於記錄應用程序信息的文件。在2.9版本可以在

找到安裝目錄/斌/ jmeter.log

你可能一直在做的東西,剛剛抽不出來的錯誤。