Over the past week, I've been trying to setup a similar benchmark between the Ruby app and a CGI::Application version. I haven't been able to setup mod_ruby at all, so I've limited myself to comparing the plain cgi versions, and the mod_perl version. I'm afraid this doesn't do justice to Ruby, but since my wife and I are expecting our first child in the coming weeks, I haven't been as eager to persue this. I'd appreciate it if someone else could lend me a hand with the ruby setup.

My CGI::Application version uses the following main components:

I made it into a framework-like application by using the following plugins and modules:

If anyone is interested, I will put my code online somewhere.

Even though the numbers are not as informative as I'd like them to be -- due to my lack of Ruby skills -- I still want to show you the benchmark results I got sofar:

Summary - 1 minute test with 15 concurrent users
  Ruby/CGIPerl/CGIPerl/mod_perl
Transactions 70 212 1685
Transaction rate 1.17 t/s3.53 t/s28.11 t/s
Longest transaction13.53 s 10.40 s 0.19 s

Summary - 3 minute test with 50 concurrent users
  Ruby/CGIPerl/CGIPerl/mod_perl
Transactions 159 607 14245
Transaction rate 0.88 t/s3.37 t/s79.23 t/s
Longest transaction88.64 s 22.76 s 5.24 s

Machine config: 1 Xeon 3.0GHz 2GB RAM OS: Debian Sarge amd64 Software: Apache/2.0.54 (Debian GNU/Linux) mod_ruby/1.2.4 Ruby/1.8.2(2005-04-11) mod_perl/1.999.21 Perl/v5.8.4 Siege 2.61 MySQL 4.1.11 ==== siege -t 1M -c 15 ==== == ruby cgi == ** siege 2.61 ** Preparing 15 concurrent users for battle. The server is now under siege... Lifting the server siege... done. Transactions: 70 hits Availability: 100.00 % Elapsed time: 59.96 secs Data transferred: 97770 bytes Response time: 11.36 secs Transaction rate: 1.17 trans/sec Throughput: 1630.59 bytes/sec Concurrency: 13.27 Successful transactions: 70 Failed transactions: 0 Longest transaction: 13.53 Shortest transaction: 8.30 == perl cgi == ** siege 2.61 ** Preparing 15 concurrent users for battle. The server is now under siege... Lifting the server siege... done. Transactions: 212 hits Availability: 100.00 % Elapsed time: 60.05 secs Data transferred: 118853 bytes Response time: 3.56 secs Transaction rate: 3.53 trans/sec Throughput: 1979.23 bytes/sec Concurrency: 12.56 Successful transactions: 212 Failed transactions: 0 Longest transaction: 10.40 Shortest transaction: 0.91 == mod_perl == ** siege 2.61 ** Preparing 15 concurrent users for battle. The server is now under siege... Lifting the server siege... done. Transactions: 1685 hits Availability: 100.00 % Elapsed time: 59.95 secs Data transferred: 920626 bytes Response time: 0.02 secs Transaction rate: 28.11 trans/sec Throughput: 15356.56 bytes/sec Concurrency: 0.60 Successful transactions: 1685 Failed transactions: 0 Longest transaction: 0.19 Shortest transaction: 0.01 ==== siege -t 3M -c 50 ==== == ruby cgi == ** siege 2.61 ** Preparing 50 concurrent users for battle. The server is now under siege... Lifting the server siege.. done. Transactions: 159 hits Availability: 100.00 % Elapsed time: 180.47 secs Data transferred: 243663 bytes Response time: 48.77 secs Transaction rate: 0.88 trans/sec Throughput: 1350.16 bytes/sec Concurrency: 42.97 Successful transactions: 159 Failed transactions: 0 Longest transaction: 88.64 Shortest transaction: 29.70 == perl cgi == ** siege 2.61 ** Preparing 50 concurrent users for battle. The server is now under siege... Lifting the server siege.. done. Transactions: 607 hits Availability: 100.00 % Elapsed time: 179.98 secs Data transferred: 333548 bytes Response time: 13.61 secs Transaction rate: 3.37 trans/sec Throughput: 1853.25 bytes/sec Concurrency: 45.89 Successful transactions: 607 Failed transactions: 0 Longest transaction: 22.76 Shortest transaction: 6.25 == mod_perl == ** siege 2.61 ** Preparing 50 concurrent users for battle. The server is now under siege... Lifting the server siege... done. Transactions: 14245 hits Availability: 100.00 % Elapsed time: 179.80 secs Data transferred: 7772678 bytes Response time: 0.12 secs Transaction rate: 79.23 trans/sec Throughput: 43229.58 bytes/sec Concurrency: 9.64 Successful transactions: 14245 \Failed transactions: 0 Longest transaction: 5.24 Shortest transaction: 0.01

In reply to Re: an interesting web frameworks benchmark by rhesa
in thread an interesting web frameworks benchmark by perrin

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.