We are in the process of performance testing an application which receives tcp requests converts them to soap requests (WCF-httpBinding) which other services work on.
The server is Windows Server 2008 R2.
The TCP requests are received by TcpListener instance (.NET C#).
There are 3 http-binded WCF services running on the same server.
We have built a performance test client which goal is to simulate multiple concurrent requests(each request has to be different and recognizable by the application).
We built a test running 150 requests that run on the same time (by 150 different threads), and we noticed straight away that some requests get the TCP connection slowly, but once they get it, they act fast.
A single request writes twice on the same connection- request and an application ack.
Although a single request+ack can take about 150ms, the 150 test takes about 7 seconds.
The Problem
When we try to run this test from 2 different computers we lose requests. some clients requests are getting
no connection was made because the target machine actively refused it
So I got here and got convinced it was because of the backlog.
I changed the TcpListener parameters and did the registry AFD backlog changes written here
but it still didn't work, so I inserted all of the TCP tuning suggested plus some netsh commands which were recommended, but still no change, we still get that error.
Is there anything else I need to know? Are there any other solutions?