Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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?

share|improve this question

migrated from superuser.com Mar 4 '10 at 17:31

This question came from our site for computer enthusiasts and power users.

add comment

2 Answers

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.

share|improve this answer
add comment

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).

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.