

How would you serve 100,000 simultaneous comet requests with Node.js? - danw
http://groups.google.com/group/nodejs/browse_thread/thread/d19df83c7fd1f3ca

======
jrockway
I've never been able to get Linux to give me this many file descriptors. If
you can convince your OS to give you enough fds, handling 100,000 idle
connections is no more difficult than handling one idle connection. The OS
feature that polls for activity is O(1) over the number of fds to poll. The
memory your app needs to keep each connection alive is minimal, and of course
scales linearly.

People like throwing around the number 100,000... but this is really nothing
to be excited about. Having 100,000 users is much more exciting than having
100,000 sockets connected from 127.0.0.1...

~~~
ig1
[http://www.metabrew.com/article/a-million-user-comet-
applica...](http://www.metabrew.com/article/a-million-user-comet-application-
with-mochiweb-part-3)

------
notauser
Slightly related...

I have been really enjoying writing code for node.js - I'm using it to render
content for non-javascript capable clients and it's handing the load nicely.
Being able to maintain one set of tests is a huge win over having a python and
a JS implementation.

Has anyone got a good way to redirect non-JS clients to a different set of
URLs? At the moment I'm using a combination of user agent sniffing and js+meta
page refresh, is there a better way?

~~~
cschneid
A <noscript> tag that has a message "You're viewing our javascript-free site.
Most features are here, but try upgrading", with a link?

~~~
iigs
I just tested a meta refresh inside a noscript tag. It works (in FF, at
least). I'm sure it would make some validator angry, but it would make
automatic redirection easy for the js-disabled case.

~~~
notauser
That's a great idea, thank you. It seems to work in safari too.

------
mattiss
Out of curiousity, what client side JS library to people typically use for
comet? I've used Orbited and found it pretty good albeit light on
documentation.

~~~
akirk
I'm also using Orbited on my project Colorillo, but it seems that it will be
superseeded by js.io (<http://js.io/>). I was having a look at it but its
documentation is even worse than the one of Orbited :)

------
herrherr
A general tip for benchmarking: Never run the benchmark tool on the same
machine as the application. Both will compete for CPU and the results will be
nearly useless.

Apart from that it might be useful to use several clients (e.g. with
autobench) especially if the application is able to handle _many_ requests.

------
moon_of_moon
Amusing thread.

~~~
z8000
Care to elaborate?

------
andrewvc
with gusto

