4

What kind of configuration do I need for a Windows based server(s) to support 10K-20K TCP connections simultaneously. 99% of these connection will only send keep alive (but will remain active) signals at 60 seconds interval and rest 1% will be sending/receiving XML data at any given time.

Can anyone suggest me the kind on infrastructure I need to setup for above requirement?

Ramesh Soni
  • 162
  • 1
  • 6

2 Answers2

3

That is quite a lot of connections!

Providing that everything does not connect at exactly the same time or your application allows for queuing / a tiny bit of latency, I do not really think you will have a problem with regards to CPU or memory as long as you take an average modern box (Minimum Quad Core, 4-8GB memory), but I think you will want to take a look at serious Intel networking gear and tweaking Windows Networking (For example look here, but that list is quite old and I am not sure how many still apply).

If however you really want to prepare for big loads of connections, the real thing to look at is clustering your environment - however, if this is a custom written application, you may have a little trouble.

Also, for that amount of connections, you will need to look at upgrading your entire infrastructure - for example, faster/powerful routers/switches.

William Hilsum
  • 3,536
  • 6
  • 29
  • 39
0

I hope you have written an event-based server, rather than a thread-based one, so you avoid using 1+ MB of stack per connection. Assuming that, the Windows kernel should be able to handle that number of open sockets with minimal configuration change. See http://smallvoid.com/article/winnt-tcpip-max-limit.html.

You will also want to look into Windows IO completion ports in order to do asynchronous network IO more efficiently than using a select() loop.

Are you planning on doing this with a general-purpose, threaded web server like IIS? If so, think again (one thread per connection = massive fail with 20K connections).

rmalayter
  • 3,762
  • 20
  • 28