【问题标题】:What could be the cause for Socket errors reported by JMeterJMeter 报告的 Socket 错误可能是什么原因
【发布时间】:2015-09-13 16:35:30
【问题描述】:

我正在进行一项测试,高峰期有 350 个用户。我将测试拆分为两台机器,一台机器运行 220 个用户,另一台机器上休息。在两台机器上运行几分钟后,我开始看到套接字异常、套接字超时异常和 HTTP 主机异常。

我试图在负载平衡器(软件)、IIS 日志、应用程序日志和环境监控系统中找到与此异常相关的任何错误,但我没有在任何地方找到它们。

我阅读了很多关于 SO 的博客和答案,它们遇到了同样的问题,并且能够通过更改 JMeter 设置来解决它。我尝试了所有这些设置,但没有任何帮助。

我正在运行我的测试

Windows Server 2012 R2/ 6 GB RAM/ 64 Bit OS/ 64 bit Java/ Intel Xeon CPU E5-46170 @ 2.90 GHz processor/ JMeter 2.13

我的 JMeter.bat 设置是:

set HEAP=-Xms1536m -Xmx2048m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=1024m -XX:+UseConcMarkSweepGC
set SURVIVOR=-XX:SurvivorRatio=3 -XX:TargetSurvivorRatio=50%
set TENURING=-XX:MaxTenuringThreshold=12
rem Java 8 remove Permanent generation, don't settings the PermSize
if %current_minor% LEQ "8" (
    rem Increase MaxPermSize if you use a lot of Javascript in your Test Plan :
    set PERM=-XX:PermSize=64m -XX:MaxPermSize=128m
)

set IPV4=-Djava.net.preferIPv4Stack=true
set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %RMIGC% %PERM% %DDRAW% %IPV4%

我的 HC.Parameter 设置是:

http.connection.stalecheck$Boolean=true

我的 user.properties 设置是:

jmeter.save.saveservice.output_format=csv
jmeter.save.saveservice.data_type=false
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
jmeter.save.saveservice.response_data.on_error=false
jmeter.save.saveservice.response_message=false
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=false
jmeter.save.saveservice.assertions=false
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.response_message=false
jmeter.save.saveservice.assertion_results_failure_message=false
jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS
jmeter.save.saveservice.default_delimiter=,
jmeter.save.saveservice.print_field_names=true
jmeter.save.saveservice.autoflush=true

httpclient4.retrycount=1
hc.parameters.file=hc.parameters

我正在运行我的测试 2 小时,并且我的测试已设置为永远循环,错误时停止线程(也运行使用:错误时启动下一个线程循环)。我检查了下载嵌入式资源并将连接池设置为 6(也使用 4 运行)。

我已经使用默认 HTTP 客户端和 HTTPClient 4 运行了测试。

到目前为止,我还能想到 3 件其他的事情可以尝试,但我几乎无能为力,可以提出一些建议。

  1. IP 欺骗,
  2. 使用 Java 客户端运行
  3. 在服务器客户端模式下运行。

如果您需要更多信息,我会尽我所能提供,但请提供帮助!

其他信息:

我遇到的套接字错误

org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$6: I/O exception (java.net.SocketException) caught when processing request: Connection reset
org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$6: I/O exception (java.net.SocketException) caught when processing request: Connection reset by peer: socket write error

直接打IIS 我通过打开失败请求日志记录直接访问一台服务器进行了一些测试,并注意到以下错误。

A process serving application pool 'XXXXXXXXX' failed to respond to a ping.
The process was terminated due to an internal error in the .NET Runtime at IP XXXXXXXXXXXXXX with exit code 80131506.

【问题讨论】:

    标签: jmeter performance-testing socketexception


    【解决方案1】:

    当您进行负载测试时,经常会发生被测应用程序无法处理负载的情况,这将表现为套接字休息、套接字超时......

    在您的情况下,服务器正在关闭连接,这意味着它可能已超载。 您需要检查服务器端的组件:

    • 防火墙
    • 负载平衡器
    • Apache 或 IIS 或任何其他网络服务器
    • 像 tomcat 或 jboss 或其他类似的 J2EE 服务器

    【讨论】:

    • 添加了我得到的套接字错误。我同意这不是 JMeter 的问题,但在其他地方应该有这些错误的相应条目,但我无法找到它。因此,我问我应该在哪里寻找或应该做什么。
    • 防火墙 - 没有被阻止 负载平衡器(软件) - 没有 IIS - 这是有趣的,这里没有明显的记录。我会更新我的问题将更多的细节。没有 Tomcat、JBoss 或其他任何东西 - .Net 应用程序
    猜你喜欢
    • 1970-01-01
    • 2011-07-10
    • 2013-06-25
    • 2011-11-18
    • 2014-10-08
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多