So? Not really impressed. WhatsApp are getting over 2M concurrent HTTP connections with Erlang in a production system. And this was 1 year ago. http://blog.whatsapp.com/index.php/2012/01/1-million-is-so-2...
The Whatsapp 2 million connection result was on a 24 core box with a ton of RAM. The Clojure benchmark was pulled off on a 4-core desktop. Also, Whatsapp connections are mostly idle, only a small fraction of users would be sending a message in any given second. Edit: It looks like the test was run only on localhost, which also means that it artificially removes much of the processing and actual network I/O factors fr…
600K concurrent HTTP connections with Clojure and http-kit
21–28 of 28 posts
Re: 600K concurrent HTTP connections with Clojure and http-kit
#22Does anyone know how they managed to not only bypass the C10k limit, but bypass it by a factor of 60?
Re: 600K concurrent HTTP connections with Clojure and http-kit
#23So? Not really impressed. WhatsApp are getting over 2M concurrent HTTP connections with Erlang in a production system. And this was 1 year ago. http://blog.whatsapp.com/index.php/2012/01/1-million-is-so-2...
The Whatsapp 2 million connection result was on a 24 core box with a ton of RAM. The Clojure benchmark was pulled off on a 4-core desktop. Also, Whatsapp connections are mostly idle, only a small fraction of users would be sending a message in any given second. Edit: It looks like the test was run only on localhost, which also means that it artificially removes much of the processing and actual network I/O factors fr…
| Clojure | WhatsApp
---------------------------
CPU | i7-2600 | Xeon X5675
Clock| 3.4GHz | 3.07GHz
Cores| 4 | 24
RAM | 16G | 96G
Conns| 600,000 | 2,000,000
It seems pretty clear that the performance increase is line with the better hardware specs.Re: 600K concurrent HTTP connections with Clojure and http-kit
#24Earlier quoted context omitted.
Its based on netty which surpassed c10k long ago. More generally modern socket concurrency is pretty high using epoll
It's not based on netty: > {:dependencies [[org.clojure/clojure "1.5.1"]]} netty is in the dev dependencies, but for benchmarking only I would guess. [edit] This project is one of the best thing that happened in the web area in clojure recently imho. Not only it is a game changer in performance/resource use, but it makes websocket and async in general trivial to use and actually production ready (same goes for its cl…
Re: 600K concurrent HTTP connections with Clojure and http-kit
#25Earlier quoted context omitted.
Its based on netty which surpassed c10k long ago. More generally modern socket concurrency is pretty high using epoll
It's not based on netty: > {:dependencies [[org.clojure/clojure "1.5.1"]]} netty is in the dev dependencies, but for benchmarking only I would guess. [edit] This project is one of the best thing that happened in the web area in clojure recently imho. Not only it is a game changer in performance/resource use, but it makes websocket and async in general trivial to use and actually production ready (same goes for its cl…
edit upon review, not a huge diff between the two actually.
Re: 600K concurrent HTTP connections with Clojure and http-kit
#26So? Not really impressed. WhatsApp are getting over 2M concurrent HTTP connections with Erlang in a production system. And this was 1 year ago. http://blog.whatsapp.com/index.php/2012/01/1-million-is-so-2...
The Whatsapp 2 million connection result was on a 24 core box with a ton of RAM. The Clojure benchmark was pulled off on a 4-core desktop. Also, Whatsapp connections are mostly idle, only a small fraction of users would be sending a message in any given second. Edit: It looks like the test was run only on localhost, which also means that it artificially removes much of the processing and actual network I/O factors fr…
There is one very significant difference and that is that the Clojure benchmark was just a benchmark while for WhatsApp it was their actual system doing something real. They have mentioned to me that they have managed to push their system to 3M connections but not in production.
Re: 600K concurrent HTTP connections with Clojure and http-kit
#27Does anyone know how they managed to not only bypass the C10k limit, but bypass it by a factor of 60?
From what I understand C10K was mostly a RAM limitation. As system ram got bigger the limit has naturally risen. Here are some guys hitting a million in Erlang. http://blog.whatsapp.com/index.php/2011/09/one-million/ HN discussion for the above link. https://news.ycombinator.com/item?id=3028547
Node.JS solve this problem by doing all in Asynchronous way (in only one thread). GO solve this pb by doing clever threads (goroutine). Functional programming seems to be very good on this issue (no need of lock mecanism and light thread).
Re: 600K concurrent HTTP connections with Clojure and http-kit
#28Earlier quoted context omitted.
From what I understand C10K was mostly a RAM limitation. As system ram got bigger the limit has naturally risen. Here are some guys hitting a million in Erlang. http://blog.whatsapp.com/index.php/2011/09/one-million/ HN discussion for the above link. https://news.ycombinator.com/item?id=3028547
From my understanding, the C10K concept is more a thread problem than a RAM limitation. It happens when each request create its own thread on server (as in Apache or IIS). Computer have problem to run 10,000 threads in same times: too much time is consumed by the OS to find the one thread that is not blocked/locked or waiting for datadabase results. Node.JS solve this problem by doing all in Asynchronous way (in only…