10M is a lot of connections. Not a lot of services have enough customers to generate that many connections and yet each connection is not so busy, so a single server can service all of them in a reasonable fashion. Viable use cases are chat, email, push message gateways, etc. Apple isn't going to talk about its server infra, and Google often doesn't either; when I was at WhatsApp, we did go over 2M connections, but changes to the client <-> server connection and improved platform push services meant connections used more resources and when we left softlayer, the target was closer to 500k; at fb, chat was on small machines so connection counts dropped further.
Big servers keep getting bigger, but virtual machines are very popular now.
IMHO, if you're going to aim for this, you would do well to research receive side scaling, and get as much as possible aligned so NIC queue/network buffers/server thread are all own by the same cpu core and there's as little cross-core communication as possible. Or just suck it up and use multiple ~C1M systems.
2 comments
[ 3.2 ms ] story [ 14.3 ms ] threadBig servers keep getting bigger, but virtual machines are very popular now.
IMHO, if you're going to aim for this, you would do well to research receive side scaling, and get as much as possible aligned so NIC queue/network buffers/server thread are all own by the same cpu core and there's as little cross-core communication as possible. Or just suck it up and use multiple ~C1M systems.