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

Reply via email to