I am writing a client server application. I suspect I'll have 250,000 clients at peek times.

What types of socket bottle necks should I expect?

I've been told to make it scalable so we can add more servers as the need arises. How many clients should I expect to connect per server?

I've started with a single server. The client is accessing data contained in a data structure, held in memory. If I have multiple servers, what is the best and fastest way to share the data between servers on my LAN? Can I share a memory space? Should I use a database instead of memory, and share the database?

Any advice or ideas would be great.

Thanks,
Lee