On Mar 20, 12:36 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > Thanks this is clear. I should clarify my position on this. > > I always liked cherrypy because it is known to be fast and because > many use it to it has been tested. The problem with cherrypy is that > the code is not as clean as Rocket's. > > I also like Rocket because its code is very clean and readable and > because the developer (you) is a member of this community. > > Some time ago I tried to rewrite Cherrypy in sneaky but I did not have > time to bring it to production quality. Rocket reminds me of sneaky > both as goals and as design and makes me feel I do not need work on > sneaky any more and I can remove it from web2py. > > Speed is an important issue but not the only issue. > > Another important issue is long term support. Are you Tim committed to > supporting Rocket long term?
I would chime in with 2 obersvations / agreements: * Performance is NOT only about speed; -- remember when web2py.py used only cherrypy, and people had truncated files (web2py-distro.zip) - because cherrypy would get into situation of dropping connections? It varied with client, and I would expect (as HTML5 takes root, and browser engines update) this will rear its head again. Yeah, sure - I want to be able to have a web2py webstore or game serving thousands of connections... maybe... BUT I also want to be able to have a community website - church, social service agency, perhaps governemt - and I want to be sure that their streaming sermons, or huge podcast uploads, or those governemt drafts of huge bills up for a vote ("How many pages did you say that was???") - that those WILL work... or live video feeds... or live development / collaborative / realtime interaction.... So there are number of connections, size of transfer (reliable large item transaction), and real-time response ability. And security... and... Well - for deployed solutions, we have "compiled" solutions. So maybe this is a mute point. But broader variety of testing is at point. I think - even as you decide to support one (and I am _all_ for "from our community" solutions!) - having a plugable architecture will HELP maintenance, i.e. make it _really_ easy to continue performance testing, and meaningful comparison tests: I am all for this! (but still choose to support one). As for "long term support": 1] with plugable testing, this is less critical (accidents happen, people go away, and sooner or later you _have_ to make changes / adapt); [2] for volunteer work, all best intentions, all commitments change.... Summary: test different things; don't worry about decision (and make pluggable part of both the maintenance/testing and "insurance" part of this). - Yarko > > With the numbers I have seen I still lean towards rockets, but I would > like to see more benchmakrs with pound (and/or haproxy). > > I would also like to hear more opinions from other users on this > matter. > > Even if we default to one of the two, we could setup web2py to give > users a choice (at least for a while). There may be problems with > openssl vs ssl, but I think they can be resolved. Eventually I think > we better make a choice and pack only one of the two. > > Massimo > > P.S. Binary web servers are not an option. > > On Mar 20, 11:58 am, "Timothy Farrell" <tfarr...@swgen.com> wrote: > > > Summary: > > > First, I'll speak in the context of a single instance of Rocket. I'll talk > > about pound in a bit. > > > ApacheBench, which I used to test Rocket, unfairly accentuates the benefits > > of Rocket. httperf allows for a much fairer test. The httperf > > configuration that Kuba used tested a non-standard situation (while > > applicable to a project he's working on) that accentuates a known weakness > > of Rocket over Cherrypy. Even though the single-instance test was > > inconclusive the multi-instance test implied that Rocket would be slower in > > the single instance. > > > Because my tests and Kuba's tests focused on polar opposite situations, the > > numbers were different. > > > Nicholas Piel tested version 1.0.1 which did not include epoll support so > > his initial conclusions, while correct for the time, are no longer accurate. > > > The difference in situations revolves around how many HTTP requests are > > pipelined over a single connection. ApacheBench puts them all in a few > > connections, httperf allows for configuring this. Kuba's benchmark > > settings put one request per connection. A real-world setting is something > > around 10, which Nicholas Piel uses. > > > Kuba released another round of tests that follow Nicholas Piel's HTTP/1.1 > > tests (10 requests per connection). The results showed Rocket as > > performing slightly faster. > > > Now, let's talk about pound. I've not used pound for any tests before so > > this was all new information to me. The first test showed 4 instances of > > Rocket behind pound to be slower than 4 instances of Cherrypy behind pound > > on a Quad-core machine. There are several possible explanations for this. > > All of the explanations require more development on Rocket to work around. > > The difference in performance would not be a show-stopper for me, but > > others may disagree. > > > I've asked Kuba to retest 4xRocket vs. 4xCherrypy with the second test > > configuration. > > > Vasile Ermicioi, put in a vote for Rocket to be included in web2py because > > I'm in the web2py community and there is still plenty of room for Rocket to > > be optimized (which I noted). > > > Now you're up-to-date. > > > -tim > > > -----Original Message----- > > From: "mdipierro" <mdipie...@cs.depaul.edu> > > Sent: Friday, March 19, 2010 9:01pm > > To: "web2py-users" <web2py@googlegroups.com> > > Subject: [web2py] Re: benchmarking: rocket vs pound with four rockets > > > had a long day, can somebody provide an execute summary of all the > > tests? > > > On Mar 19, 3:33 pm, Timothy Farrell <tfarr...@swgen.com> wrote: > > > Thank you Kuba. Would you mind re-running the 4x pound test like this > > > also? > > > > On 3/19/2010 3:09 PM, Kuba Kucharski wrote: > > > > > One instance of each, with 10 calls in a connection as it is closer to > > > > reallife scenario: > > > > (numbers speak for themselves) > > > > > CHERRYPY: > > > > > r...@kubatron:/home/kuba/httperf-0.9.0/src# ./httperf --hog --server > > > > 192.168.0.1 --port=8000 ==uri=/vae/default/benchmark2 > > > > --num-conns=10000 --num-calls=10 > > > > httperf --hog --client=0/1 --server=192.168.0.1 --port=8000 --uri=/ > > > > --send-buffer=4096 --recv-buffer=16384 --num-conns=10000 > > > > --num-calls=10 > > > > > Maximum connect burst length: 1 > > > > > Total: connections 10000 requests 100000 replies 100000 test-duration > > > > 67.659 s > > > > > Connection rate: 147.8 conn/s (6.8 ms/conn,<=1 concurrent connections) > > > > Connection time [ms]: min 6.2 avg 6.8 max 10.5 median 6.5 stddev 0.2 > > > > Connection time [ms]: connect 0.1 > > > > Connection length [replies/conn]: 10.000 > > > > > Request rate: 1478.0 req/s (0.7 ms/req) > > > > Request size [B]: 64.0 > > > > > Reply rate [replies/s]: min 1474.7 avg 1478.0 max 1480.3 stddev 2.0 (13 > > > > samples) > > > > Reply time [ms]: response 0.6 transfer 0.0 > > > > Reply size [B]: header 205.0 content 66.0 footer 2.0 (total 273.0) > > > > Reply status: 1xx=0 2xx=0 3xx=100000 4xx=0 5xx=0 > > > > > CPU time [s]: user 25.67 system 41.99 (user 37.9% system 62.1% total > > > > 100.0%) > > > > Net I/O: 483.5 KB/s (4.0*10^6 bps) > > > > > Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0 > > > > Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0 > > > > > ROCKET: > > > > > r...@kubatron:/home/kuba/httperf-0.9.0/src# ./httperf --hog --server > > > > 192.168.0.1 --port=8000 ==uri=/vae/default/benchmark2 > > > > --num-conns=10000 --num-calls=10 > > > > httperf --hog --client=0/1 --server=192.168.0.1 --port=8000 --uri=/ > > > > --send-buffer=4096 --recv-buffer=16384 --num-conns=10000 > > > > --num-calls=10 > > > > Maximum connect burst length: 1 > > > > > Total: connections 10000 requests 100000 replies 100000 test-duration > > > > 64.760 s > > > > > Connection rate: 154.4 conn/s (6.5 ms/conn,<=1 concurrent connections) > > > > Connection time [ms]: min 5.9 avg 6.5 max 72.7 median 6.5 stddev 1.0 > > > > Connection time [ms]: connect 0.1 > > > > Connection length [replies/conn]: 10.000 > > > > > Request rate: 1544.2 req/s (0.6 ms/req) > > > > Request size [B]: 64.0 > > > > > Reply rate [replies/s]: min 1526.9 avg 1544.2 max 1555.9 stddev 8.6 (12 > > > > samples) > > > > Reply time [ms]: response 0.6 transfer 0.0 > > > > Reply size [B]: header 216.0 content 66.0 footer 0.0 (total 282.0) > > > > Reply status: 1xx=0 2xx=0 3xx=100000 4xx=0 5xx=0 > > > > > CPU time [s]: user 24.18 system 40.58 (user 37.3% system 62.7% total > > > > 100.0%) > > > > Net I/O: 521.8 KB/s (4.3*10^6 bps) > > > > > Errors: total 0 client-timo 0 socket-timo 0 connrefused 0 connreset 0 > > > > Errors: fd-unavail 0 addrunavail 0 ftab-full 0 other 0 > > > -- > > You received this message because you are subscribed to the Google Groups > > "web2py-users" group. > > To post to this group, send email to web...@googlegroups.com. > > To unsubscribe from this group, send email to > > web2py+unsubscr...@googlegroups.com. > > For more options, visit this group > > athttp://groups.google.com/group/web2py?hl=en. > > -- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.