NodeBalancer Concurrent Connections

May 8, 2012 2:54 pm

10000When we were figuring out our NodeBalancer pricing model, we decided to make it simple (a philosophy we apply to most decisions) and to not nickel and dime you. And so we announced the NodeBalancer service with a fixed 5,000 concurrent connections limit and a fixed price of $19.95/month.

Today we are pleased to announce NodeBalancer concurrent connections have been increased to 10,000, with no change in price.  All existing NodeBalancers have already been seamlessly upgraded, and all new NodeBalacers will get the new limit.

NodeBalancer pricing:

NodeBalancer Instance $19.95 / mo ($0.027 / hour)
10,000 Concurrent Connections No charge
Transfer Out Deducted from Transfer Pool then $0.10 / GB
Transfer In No charge

If you’d like to know more about how NodeBalancers can help you:

Enjoy!

-Chris

17 Responses

  1. Its over 9000!

    seriously though guys. This is great!

  2. You guys really know how to set the bar! Thx!

  3. The one thing stopping me from using the awesome nodebalancers is that I can’t get the visitors IP if using https. Since my web app does geoip it NEEDS this info. Any chance at fixing this soon?

  4. Great, thanks, guys!

  5. @Brian – Putting HTTPS termination at the NodeBalancer level would mean the NB would become a bottleneck as it is currently designed. Better to distribute HTTPS load across the backends. If you need the IP of a visitor, do it once either by an HTTP request or to a request to a non-loadbalanced HTTPS server of yours, and then associate it with that user’s session. Hope that helps.

  6. Would it be possible to create a “test” nodebalancer with a limit of eg. 5 connections, that is free? I would like to test my high availability setup and then migrate to the paid nodebalancer when my application can go live.

  7. @Tom – sorry, no. It would still occupy resources (and a precious IPv4 address). However we prorate everything to the day – so adding and then removing a NB would put a credit for the unused days back onto your account. A NB for three days would end up costing you about two bucks.

  8. Guys, I am using node ballancer for XMPP servers – it means, connected user has always pernament live IP connection, but with very low traffict. Because of this, 10 000 is low number for me.

    What happens, if I go over 10 000? Nobody else will connect? Or can I pay for more connections? Can you scale up to say 100 000?

  9. @Jindra you would need to use multiple NodeBalancers to go beyond 10,000 concurrent connections.

  10. Gotta love Linode!

  11. @caker – are nodebalancers ok with websockets?

  12. Also to chime in about persistent connections, would you happen to know if NodeBalancers will work with Server Sent Events (http://en.wikipedia.org/wiki/Server-sent_events).

    I would guess that it would be similar to XMPP or WebSockets.

    Either way, great news about upping the limit!

  13. This is awesome, was having massive problems with the 5000 concurrent limit.

    I’d love to have a ‘premium’ Nodebalancer option though with say 50,000 concurrent support rather than having to use the DNS round robin hack I’m using now.

    Keep up the great work!

  14. What does “concurrent connection” actually mean?

    If the definition is at HTTP level, that’s fine. A connection is immediately terminated with “Connection: close” and you -1 from the pool.

    But if it’s at TCP level, it’s problematic for us. Because there’s always hanging TIME_WAIT at the end of TCP lifecycle, and becomes the majority of “connections”. For web apps that handle massive amount of short-lived requests, TIME_WAIT would be dominant.

    Or if it’s IP / netfilter level, it’s problematic, too. ip_conntrack would saturate very fast.

    I think NB is meant to be a load balancer and we don’t want it to be THE bottleneck, obviously. Would like to know those basics before start testing.

  15. Simply put,

    Assuming TIME_WAIT is set at 60 seconds (which is sensible and is the default in many systems), you can handle only 10,000 requests per minute (or less), even if your servers are very fast and respond to each request in close to zero milliseconds, and seemingly there’s no “concurrent” connections at the HTTP level.

    It is somewhat counterintuitive and confusing way to advertise the service, IMO.

    You could easily check how many dead-but-counted-as-concurrent connections on your system, by running the following command on your web server.

    netstat -an | grep TIME_WAIT | wc -l

    and compare it with the raw output of “netstat -an”. See how TIME_WAIT could be dominant in your resource usage.

    Considering that a single Linode 512 instance with Nginx could easily handle 100,000+ concurrent connections (which means Linode is very FAST!), probably you could do better and offer a higher end of lineup for NodeBalancer. BTW, we need at least 200,000.

  16. A TCP session in TIME_WAIT is not counted against the NodeBalancer connection pool.

    That being said, if you need 200,000 concurrent ESTABLISHED TCP connections, you would need 20 NodeBalancers.

  17. So if I understand this correctly if you need to go over 10,000 connection you would need multiple nodeBalancers with round robin dns?

Leave a Reply