.net应用程序中的Java.net.SocketException连接重置错误

时间:2015-08-02 14:36:52

标签: .net performance jmeter

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

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

我们尚未对网络层上的表现采取任何特殊措施。但是在作为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">

除此问题外,我们的App层使用率也较高(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

App Server(Quantity = 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

4 个答案:

答案 0 :(得分:2)

如果我正在执行分布式测试,我是否应该在所有从属系统上执行以下步骤,而不是让&#34;连接重置&#34; 错误..?< / p>

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

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

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

http.connection.stalecheck$Boolean=true

答案 1 :(得分:1)

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

  1. 将所有HTTP Request个采样器的实施更改为HTTPClient4。最好的方法是通过HTTP Request Defaults
  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实例,以便它可以读取更新的属性并重新开始测试。

答案 2 :(得分:0)

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

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

所以3个选项:

  • 根据实际流量,您的负载资料过于激进

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

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

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

答案 3 :(得分:0)

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