3 ms·
Does anyone know how they managed to not only bypass the C10k limit, but bypass it by a factor of 60?
by jsaxton86 14y ago
Does anyone know how they managed to not only bypass the C10k limit, but bypass it by a factor of 60?
- cnlwsu 14y ago10k isnt really a limit. In linux you should consider it being about 100 for every 1MB of ram (10%) of fs.file-max. 1 million isn't really hard nowadays
- andrewvc 14y agoIts based on netty which surpassed c10k long ago. More generally modern socket concurrency is pretty high using epoll
- zcam 14y agoIt'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 client). Some would mention Pedestal but it forces you to learn quite a few abstractions and is totally alien compared to the rest of the clojure web ecosystem and also only supports a single async "protocol" (SSE). But pedestal is about a full stack experience, integration with the client etc, so it certainly will attract other users.
- andrewvc 14y agoAh, interesting, I should have looked deeper. Well they're both almost certainly based on java NIO then, which once again leads us to epoll and friends.
- prospero 14y agoSome would also mention Aleph, too. https://github.com/ztellman/aleph https://github.com/ztellman/aleph
- andrewvc 14y agoWell, aleph already exists, but candidly http-kit has a simpler API for most tasks edit upon review, not a huge diff between the two actually.
- stonemetal 14y agoFrom 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/ http://blog.whatsapp.com/index.php/2011/09/one-million/ HN discussion for the above link. https://news.ycombinator.com/item?id=3028547 https://news.ycombinator.com/item?id=3028547
- olivier1664 14y agoFrom 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 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).
- deleted 14y ago[deleted]
- gargoiler 14y agoC10k was a relevant limit 10 years ago perhaps. It's only of historical interest now.