我正在使用JMeter对媒体服务器进行负载测试。我编写了扩展AbstractJavaSamplerClient
的自定义采样器。对于日志我正在使用log4j(仅使用一个rootCategory appender)。
可以考虑两种情况。在第一种情况下使用ConsoleAppender
,在第二种情况下使用FileAppender
。
在第一种情况下,日志文件突然终止。但是,测试计划成功执行,JMeter log(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 :(得分:0)
我会检查JMeter应用程序本身的日志文件。 JMeter具有用于记录信息的日志文件(来自侦听器),JMeter具有用于记录来自应用程序的信息的文件。在版本2.9中,可以在
找到它安装目录/ bin / jmeter.log
你可能一直在做一些只是出错的事情。