.net应用程序中的Java.net.SocketException连接重置错误
问题内容:
我们有一个n层(.net)Web应用程序,其中有一个Web层-> App层->数据库。
一切正常,直到我们进行了负载测试(使用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">
除了这个问题,我们的应用层使用率也更高(50-60%)。 以下是我们3个VM的配置(每层1个)
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(数量= 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
DB服务器(数量= 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
问题答案:
IIS日志有助于深入探究根本原因。我们发现在我们面临套接字问题的所有请求中都有网络连接异常。