I've developed some smaller web applications using Common Lisp, but
I'm not confident that any of the CL web servers (CL-HTTP,
Hunchentoot, AllegroServe, Araneida, mod_lisp, et al) are up to
handling high traffic high data sites. (Maybe they are, I just don't
know).
Does anyone know how good any of the CL web servers are at handling
high traffic?
I figure the Clojure questions in your message will get plenty of
responses, so I'll address this part.
A million hits a day is 11 hits per second (average). I've built SOAP
servers in CL using AllegroServe that easily do 100+ requests per
second on a single machine (and that's on one processor and using
locks) without any tuning.
Plain ol' HTTP is much simpler than SOAP (no XML parsing!); my
profiling suggests that several hundred requests per second would be
straightforward, particularly if your handlers didn't rely on shared
state (which in CL requires locking). Of course, if you're using fancy
routing systems etc., that number will fall, but CL + aserve is no
slouch. Try it and see: write a trivial aserve app, set the number of
worker threads high, and bang on it.
Stick pound or nginx on there, run one server per core on an 8-way
box, and you'll be I/O limited for sure. Farm your static content out:
that allows you to handle only the dynamic load.
That said, it's foolish to plan on using scaling *up* to handle larger
traffic volumes, unless you want your user base to grow slower than
Moore's law! Design for horizontal scalability, and you're free to use
systems as slow as you like -- even Rails on MRI -- by throwing more
boxes at the problem. Put your HTTP proxy on another box, and balance
across N servers, each running as many processors as you need.
Re load balancers: I've had good success with hardware LBs (Alteons,
NetScalers), assuming you don't need in-memory sessions for some
reason. They can be configured for sticky connections, too. In the
software world, look at http://apsis.ch/pound, NginX, and HAproxy. The
big trick is to confine your state so that you can trivially bring up
a new box -- that gives you easy failover, load-balancing, and
horizontal scalability.
-R
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en