gpt4 book ai didi

java - JMeter 负载测试期间出现无法解释的日志记录问题

转载 作者:行者123 更新时间:2023-12-02 16:48:18 26 4
gpt4 key购买 nike

我正在使用 JMeter 对媒体服务器执行负载测试。我编写了扩展 AbstractJavaSamplerClient 的自定义采样器。对于日志记录,我使用 log4j (仅使用一个 rootCategory 附加程序)。

  • 当线程组中的线程数量相对较小(小于 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 M。硬盘驱动器上有足够的可用空间。我正在 Ubuntu 12.04 x64 上运行测试。 /etc/security/limits.conf 中对文件大小没有限制(据我所知,默认情况下此操作系统中没有文件大小限制)。

我尝试模拟日志记录过程。我编写了一个简单的应用程序,它创建了 2000 个并行线程,使用相同的 log4j 配置在日志中总共写入了大约 70 M 的内容。该应用程序在目标机器上运行良好。

最后,我用 RollingFileAppender 替换了 FileAppender 并将日志文件大小限制设置为 2 M。在这种情况下,日志记录过程可以正确执行。

如何解释 ConsoleAppender 和 FileAppender 的奇怪行为?
有什么建议吗?

最佳答案

我会检查 JMeter 应用程序本身的日志文件。 JMeter 具有用于记录信息(来自监听器)的日志文件,并且 JMeter 具有用于记录来自应用程序的信息的文件。在 2.9 版本中,可以在

找到它

安装目录/bin/jmeter.log

您可能一直在做一些只会引发错误的事情。

关于java - JMeter 负载测试期间出现无法解释的日志记录问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16191647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com