I did a proof of concept in ruby, but it certainly won't scale. After reading the SEDA stuff, and playing with Java NIO a bit, I figured I might actually be able to get away with doing this in Java instead of OCaml or C.
First fruits are paying off. I didn't go for a full fledged SEDA architecture (though I may base a future version on Sandstorm) but a simple worker pool handling requests, and it scales up pretty nicely. I need to put it side by side with Pound and see how it does. I expect it to underperform on a single instance, as Pound is pretty well done, and much closer to the metal, even with NIO. That said, Pound doesn't do failover or clustered spraying, so I am willing to bet that the actual scalability of monica will surpass Pound pretty quickly. Need spare machines. I don't think I am as efficient as possible in the worker threads at the moment, each thread is dealing with a BufferedReader on a Socket. NIO Buffer access may be quicker, may not. May need to hit Borders and nose through O'Reilly's NIO book.
Also, I may look into swapping out to SEDA's NBIO library, the java.nio -- java.net combo seems like something tacked on, despite being the primary benficiary of NIO. We shall see. Need to spend more time on OJB... Argh. Too many itches.