I am trying to write a high performance TCP/IP gateway between a remote 3rd
Party service provider and local application servers. It's running on a
Windows 2003 Enterprise server SP2. I'm using C# and the async methods of
the System.Net.Sockets.Socket class to listen for incomming connections.
The remote 3rd Party client (always the same client) connects , sends about
300 bytes and disconnects.
The local server accepts connections, enqueues the 300 bytes in a Microsoft
Message Queue and disconnects. Not muct to it. I can process a single
message in milliseconds.
The core code is running and I am testing the performance now trying to
determine how well it will scale. I have a tool that tries to simulates the
remote client. I am filling a message queue with 300 byte pakets and firing
connection requests as fast as I can pull them out of the queue. It seems
that I top out at about 50 connections per second. Rates higher then that
produce a connection refused response from the server.
I guess I have three questions.
Is there a restriction imposed by the OS that limits incoming connections?
(Denial of Service Attacks) The connection requests will always be from the
What would be a reasonable expectation of the number of connections per
second I could achieve using the async methods of the
Do you have any other thoughts on what might be limiting the connection
Thanks in advance,