The Ruby 19x Web Servers Booklet

Labels: , , , , , ,

I have just finished a draft of my Ruby web server review, I have uploaded it to my scribd account, This is still a work in progress and I am looking at improving it further and may be include Unicorn tests as well.

Here is the document:

While at the topic of Ruby web servers, I highly recommend this article by Ryan Tomayko on Unicorn's architecture.

Edit: I didn't know that scribd requires you to login before you can download the files, here is a direct link

Comments (18)

Thanks, that is a nice public service.

This comment has been removed by the author.

Thanks for taking time to do this. It is a very helpful comparison of the options, and a good primer on how the server piece works.

Thanks @Fred and @Josh, I hope it could be useful to some.

Awesome doc. Would love to see Unicorn thrown into the mix.

One thing. After all that great review, it was very disappointing to see "requests/second" used as the benchmark.

See http://www.therailsway.com/2009/1/6/requests-per-second for a solid motivation against this benchmark.

Would love to see the results with a more meaningful benchmark like "seconds/request".

Thanks for sharing. I'd like to suggest just posting the PDF file rather than use scribd - it's a real pain to read and they make it hard to download.

On page 14/60 you say that it is useless to select() real file descriptors. Could you please point to some literature on asynchronous disk i/o? I wonder why so many applications block UI on disk operations or the whole OS slows down on a heavy disk i/o.

@Sheldon, I beg to differ, avg-seconds/request is identical to requests/second, you can do the math to move from one to the other. What I wanted to do but didn't have enough time and energy to do is latency distribution. Which besides reporting the avg-seconds/request it also reports min and max time and values for the different percentiles. The remarks on EM in the analysis section hint to that but I think it could have been much better if I expanded on this.

@Denis, I am not sure what's wrong with their download process, I just click download and I get the file, am I missing something? you are not the only one to complain.

@Oleg, please have a look at this and this

Very enjoyable read!

Is it possible to download a PDF w/o opening an account with Scribd. I'd rather not.

10x

@oldmoe I didn't have an account with scribd and although I signed up just to get your document, it's a relatively cumbersome process. They don't really add anything - why not just upload the PDF to your blog?

@Denis, apologies, I didn't know that scribd required login before you can download. I have edited the post and added a direct download link

Yes, if you only look at mean seconds per request, it's the same.

But there's more available from the data than the mean. In particular, there's maximum, mode and standard deviation.

When your focus is on latency instead of throughput, you see different things. And they're the things that typically matter more to the consumer of the service, who really doesn't care about your other consumers.

What you've produced (and released for free) is already very valuable contribution to understanding how web application servers work.

I'm just suggesting a way you could add even more value, because I suspect that measuring latency may unearth some surprises. If you don't share my suspicion, that doesn't lessen the value you've already contributed.

Thank you.

@Sheldon, I totally agree btw regarding the importance of latencies :). And not I am not just suspicious, I have seen some strange distributions during the tests that need to be investigated further. I have a feeling that EM based servers will show higher latencies for concurrent long requests.

I really wanted to do a latency distribution for that document but couldn't afford it time wise (much easier to record and graph single numbers).

I hope I can update the document with some latency data but I think the highest value currently would be the inclusion of Unicorn and Rainbows.

Wow! Thank you! I always wanted to write in my site something like that. Can I take part of your post to my blog? Please come visit my site Minnesota Internet Resource Business Yellowpages when you got time.

Wow! Thank you! I always wanted to write in my site something like that. Can I take part of your post to my blog? Please come visit my site Mississippi Community Forums Classifieds when you got time.

I noticed a typo(?) in one of the code examples. On p10 UnixSocket.pair should be UNIXSocket.par

Nice work! Excellente!