On the lispweb mailing list, Andrew Wolven asked "I was wondering how well the multithreading performs on x86 cmucl for application servers like imho and portable allegroserve. Is it good enough to use for a production web server?"
I've recommended at work that we should probably look for an alternative to cmucl for production Echo servers. It doesn't take very long spent trying to work around limitations or bugs before it would be more worthwhile to pay a lot of money for a commercial implementation that's stronger in the areas that are important in our application (multiprocessing, for one).
So this is the gist of my reply:
I consider cmucl to be just barely "production quality." The multiprocessing facility in particular is a weakness. Its cooperative threading is a big disadvantage, and I didn't find even that to be very stable. Plenty of times I found myself either with an unresponsive listener or in the low-level debugger, with no recourse but killing lisp.
As a web server, if you're not doing too much work per request, you might be OK. Unless you go to a lot of trouble requests are going to be serialized. This seems rather horrible to me, and is probably enough to knock cmucl out of contention for high traffic sites. And I think you'd have to take special care to keep a single messed up client (or malicious clients) from hanging your site.
It didn't work very well for our application to do much work other than being a web server, either; No http requests will be handled until the currently running thread blocks.
I'm expecting to be disagreed with, maybe I'll learn I am mistaken.Posted by jjwiseman at March 20, 2002 12:22 AM