Share via


Resolve SocketExceptions in VSTS Web / Load tests

Socket exceptions can happen in following cases

  Because of your Load Test Agent machines

 Error : Exception SocketException An operation was attempted on a non-blocking socket that already had an operation in progress Stack

System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: An operation was attempted on a non-blocking socket that already had an operation in progress

   at System.Net.Sockets.Socket.BeginConnectEx(EndPoint remoteEP, Boolean flowContext, AsyncCallback callback, Object state)

   at System.Net.Sockets.Socket.UnsafeBeginConnect(EndPoint remoteEP, AsyncCallback callback, Object state)

   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)

Solution: Some times in corp networks load test agent/controller machines uses internet proxy setting in that case - Proxy server will reject connections to the targeted servers saying

  Because of DOS attack

Error : “No connection could be made because the target machine actively refused it <IP Address>”

 Solution1: If the connections are made directly (without proxy) and still if you encounter Socket Exception then that could be due to the fact that Webserver is rejecting the connections as it receiving connection requests from the same host. In that case try adding more agents to distribute the load and use as many as IP’s in Agent configuration settings to generate the targeted load.

Solution2: Sometimes due to settings in web.config you will not be able to generate the targeted load then adjust throttling settings based on the processors

 <behaviors>
            <serviceBehaviors>
                <behavior name="WIBSBehavior">
                    <serviceDebug includeExceptionDetailInFaults="false" />
          <serviceThrottling maxConcurrentCalls="32" maxConcurrentSessions="30"/>
                </behavior>
            </serviceBehaviors>
</behaviors>