【问题标题】:Java.net.SocketException connection reset error in .net application.net 应用程序中的 Java.net.SocketException 连接重置错误
【发布时间】:2015-10-24 17:07:43
【问题描述】:

我们有一个 n 层 (.net) Web 应用程序,其中有一个 Web 层 -> 应用层 -> 数据库。

在我们进行负载测试(使用 jmeter)之前,一切正常。 当我们模拟 100 个并发用户时,经过 3 -4 分钟。 jmeter 开始记录 SocketException,连接重置。当我们检查应用程序日志(我们记录应用程序内部的所有异常)和系统事件时,我们什么也找不到。

我们没有对 Web 层的性能采取任何特殊措施。但是在作为 wcf 应用程序的 App 层上,我们使用了每次调用/多次并发。我们在应用层使用了以下配置:

        <serviceThrottling
           maxConcurrentCalls     = "200"
           maxConcurrentSessions  = "200"
           maxConcurrentInstances = "200"/>

。 . .

    <binding name="defaultNetTcpBinding" closeTimeout="00:10:00" sendTimeout="00:10:00" receiveTimeout="00:10:00" openTimeout="00:10:00" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647"
             maxConnections="200" listenBacklog="200">

除此问题外,我们的应用层使用率也较高(50-60%)。以下是我们的 3 个虚拟机的配置(每层一个)

Web 服务器(数量 = 1) 处理器 Intel Xeon CPU X5675 @3.07 GHz 2.19 GHz

Number of Cores (Virtual)   8

RAM 8GB

Operating System    Windows Sever 2012 Standard

Processor Type  64 Bit

Softwares Installed NET Framework 4.5

应用服务器(数量 = 1) 处理器 Intel Xeon CPU X5675 @3.07 GHz 3.07 GHz

Number of Cores (Virtual)   8

RAM 8GB

Operating System    Windows Sever 2012 Standard

Processor Type  64 Bit

Softwares Installed NET Framework 4.5

数据库服务器(数量 =1) 处理器 Intel Xeon CPU E7-4830v2 @ 2.20 GHz 2.19 GHz

Number of Cores (Virtual)   8

RAM 8GB

Operating System    Windows Sever 2012 Standard

Processor Type  64 Bit

Softwares Installed Microsoft SQL Sever 2014

【问题讨论】:

  • 您在 JMeter 中选择了哪个 HTTP 请求实现? (java, HTTPClient4, HTTPClient 3.1)
  • 不确定。可以与我们的 QA 核对并告知您。你能给我一些提示吗?
  • 对答案有任何反馈吗?

标签: .net performance jmeter


【解决方案1】:

如果我正在执行分布式测试,我是否应该在我的所有从属系统上也执行以下步骤,以免出现 “连接重置” 错误..?

将接下来的 2 行添加到 user.properties 文件(位于 JMeter 安装的 /bin 文件夹下):

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

hc.parameters 文件(相同位置 - JMeter 安装的 /bin 文件夹)中添加下一行:

http.connection.stalecheck$Boolean=true

【讨论】:

    【解决方案2】:

    如果您绝对确定您的服务器没有问题并且问题出在 JMeter 方面,您可以尝试按照Connection Reset since JMeter 2.10 ? wiki 页面中的步骤进行操作:

    1. 将所有HTTP Request 采样器的实现更改为HTTPClient4。最好的方法是通过HTTP Request Defaults
    2. 将接下来的 2 行添加到 user.properties 文件(位于 JMeter 安装的 /bin 文件夹下):

      httpclient4.retrycount=1
      hc.parameters.file=hc.parameters
      
    3. hc.parameters 文件(相同位置 - JMeter 安装的 /bin 文件夹)中添加下一行:

      http.connection.stalecheck$Boolean=true
      
    4. 重新启动 JMeter 实例,以便它可以读取更新的属性并重新启动您的测试。

    【讨论】:

      【解决方案3】:

      您的服务器很可能由于负载测试而过载。

      因此它开始拒绝显示为连接重置错误的连接。

      所以 3 个选项:

      • 根据实际流量,您的负载配置文件过于激进

      • 您的负载配置文件正常,您的服务器配置不正确或容量不足

      • 您的应用程序无法处理此负载

      您可以通过减慢加速来检查这一点,以查看您何时开始遇到问题。

      【讨论】:

        【解决方案4】:

        IIS 日志有助于挖掘根本原因。我们发现在我们遇到 Socket 问题的所有请求中都存在网络连接异常。

        【讨论】:

          猜你喜欢
          • 2017-08-15
          • 2017-09-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-01
          • 2010-09-08
          相关资源
          最近更新 更多