These tests basically measure lots of things at once and are dominated by the database. If your are using sqlite, it locks the database completely on every request so there is no concurrency.
I think we need a standard app for testing with various options: 1) db, no-db 2) 1,10,100 tables 3) view, no-view 4) compiled, not-compiler On Jan 17, 2:49 pm, Ivan P <ivanv...@gmail.com> wrote: > Alex, > Actually, this is my first try at a production deployment, and I have > not set up another to test against. Is there a standard "ab" test that > is usually run for comparison in web2py community? In any case I ran > the following command with sqlite as the backend server (but doubt it > matters for this page) for the cherokee setup and the web2py builtin: > ab -n 1000 -c 5 url > > ===CHEROKEE results=== > > Server Software: Cherokee/0.99.39 > Server Hostname: cparts.localhost > Server Port: 80 > > Document Path: /admin/default/index > Document Length: 5658 bytes > > Concurrency Level: 5 > Time taken for tests: 41.809 seconds > Complete requests: 1000 > Failed requests: 0 > Write errors: 0 > Total transferred: 6031000 bytes > HTML transferred: 5658000 bytes > Requests per second: 23.92 [#/sec] (mean) > Time per request: 209.043 [ms] (mean) > Time per request: 41.809 [ms] (mean, across all concurrent > requests) > Transfer rate: 140.87 [Kbytes/sec] received > > Connection Times (ms) > min mean[+/-sd] median max > Connect: 0 0 0.1 0 3 > Processing: 65 208 11.3 208 283 > Waiting: 65 208 11.3 208 283 > Total: 69 209 11.2 208 283 > > Percentage of the requests served within a certain time (ms) > 50% 208 > 66% 212 > 75% 214 > 80% 215 > 90% 219 > 95% 223 > 98% 235 > 99% 245 > 100% 283 (longest request) > > ===CHERRY PY results=== > > Server Software: CherryPy/3.2.0beta > Server Hostname: localhost > Server Port: 8000 > > Document Path: /welcome/default/index > Document Length: 6531 bytes > > Concurrency Level: 5 > Time taken for tests: 41.120 seconds > Complete requests: 1000 > Failed requests: 0 > Write errors: 0 > Total transferred: 6892000 bytes > HTML transferred: 6531000 bytes > Requests per second: 24.32 [#/sec] (mean) > Time per request: 205.601 [ms] (mean) > Time per request: 41.120 [ms] (mean, across all concurrent > requests) > Transfer rate: 163.68 [Kbytes/sec] received > > Connection Times (ms) > min mean[+/-sd] median max > Connect: 0 0 0.0 0 0 > Processing: 51 205 66.0 197 499 > Waiting: 50 201 65.2 193 499 > Total: 52 205 66.0 197 499 > > Percentage of the requests served within a certain time (ms) > 50% 197 > 66% 222 > 75% 240 > 80% 254 > 90% 296 > 95% 328 > 98% 368 > 99% 402 > 100% 499 (longest request) > > Sure, I'll make it a slice. > > On Jan 17, 11:01 pm, Alex Fanjul <alex.fan...@gmail.com> wrote: > > > Many thanks for your tutorial Ivan, > > I'll give it a try... have you noticed any improvements with cherokee? > > could you show us your "ab" benchmarks? > > > regards, > > Alex F > > > P.S: try to make an slice in web2pyslices.com > > > El 14/01/2010 23:14, Ivan P escribi : > > > > Inspired by Phyo Arkar's howto on setting up web2py with Cherokee and > > > FCGI I tried the setup, but was somewhat unsatisfied with the fcgi > > > method and decided to try uWSGI. I am happy I did so, since it proved > > > to be real easy and uWSGI is a real powerhouse and deserves attention > > > of the whole python webdev community. On to the howto. > > > > I. Compile from source and run the latest uWSGI, 0.9.3 in my case > > > (available herehttp://projects.unbit.it/uwsgi/wiki). > > > 1. Download the source from and unzip. > > > > 2. To compile you must install packages python-dev and libxml2-dev (at > > > least thats what they are called on a debian-based system) > > > > 3. When compiling simply run pick a makefile which matches your OS and > > > python version and run something like "make -f Makefile.Linux.Py26". > > > This produces only one executable named uwsgi26, where 26 is my python > > > version. You can put it in /usr/local/bin. > > > > 5. To run it, you have two options: > > > > 5a) Create an xml file and call it, for example, config.xml. Put > > > something like this in it: > > > <uwsgi> > > > <pythonpath>/var/web2py/</pythonpath> > > > <app mountpoint="/"> > > > <script>wsgihandler</script> > > > </app> > > > </uwsgi> > > > In this file "pythonpath" is where your web2py directory is and > > > "script" is the file you want to run, in this case its web2py's > > > "wsgihandler.py". Now run uWSGI like this, but replace "www-data" with > > > the owner of your web2py directory, if its the same as your current > > > user omit the sudo command: > > > sudo -u www-data uwsgi26 -s /tmp/uwsgi.sock -C -x config.xml > > > Why you need to change user is because web2py writes things (session > > > data for example) to disc during execution, so the uwsgi process, > > > which runs the web2py code, has to be the owner of the directories > > > that contain the framework. Note that uwsgi now opened a socket we > > > called "/tmp/uwsgi.sock" About other options consult the uwsgi manual > > > or "uwsgi -h". > > > > 5b) You can omit the xml file and pass all the info via command line, > > > doing that is easy, so consult the uwsgi docs :) > > > > II. Setting up cherokee (0.99.37 in my case). > > > 1. Install it, run cherokee-admin, go to localhost:9090 > > > > 2. Open "Information Sources" and create a new one with these > > > parameters: > > > Nick: web2py > > > Connection: /tmp/uwsgi.sock > > > Interpreter: uwsgi26 -s /tmp/uwsgi.sock -C -x /path/to/config.xml > > > The interpreter line is why it is a good idea to have your web2py > > > source owned by www-data or the Cherokee server's user - when cherokee > > > runs it, you can be sure that owners of the sources and process match. > > > And of course put the correct path in. > > > > 3. Go to "Virtual Servers" and edit the default one, or you can create > > > a new one, but make sure you give it a domain name to avoid conflict > > > (not really sure what happens when they conflict). > > > > 4. Go to the "Behavior" section and edit the "Default" behavior. > > > > 5. Set the "Handler" to uWSGI and on the bottom set the information > > > source to "web2py" > > > > 6. Pick "Hard restart" from the dropdown on the left and click "Save". > > > TO PREVENT HEADACHE READ THIS: I seem to get inconsistent results with > > > these restarts, so if you're doing production it seems to me that one > > > should restart the server manualy (via /etc/init.d/cherokee restart, > > > that is). Or maybe I should RTFM. > > > > 6. Go to localhost and BAM! (or at least I hope its a bam). veeery > > > easy if all goes smooth. > > > > "But wait, what about url rewriting?" was my thought, and this caused > > > much confusion, so I'll add a section on that. > > > > III. Doing some redirection (I'll give few examples due to poor > > > knowledge of regex). > > > Lets redirect "localhost/" to "/myapp/cntrlr/index" > > > 1. Go back to the "Behavior" section of your server. > > > > 2. Add a new rule and set it's type to "Regular Expression" and set > > > the regular expression to "^/$", this simply matches "localhost/" or > > > "localhost", nothing more, nothing less. > > > > 3. Go to the "Handler" section and set the rule to "Redirect" with > > > these parameters > > > Type: Internal > > > Regular Expression: (yes, blank) > > > Substitution: /myapp/cntrlr/index > > > The regular expression is blank because for this scenario we did all > > > the matching while defining a new behavior, you can combine the two in > > > creative ways. > > > > That's about all. Your imagination should take care of the rest. I, > > > for example, put my static files separately from the framework by > > > creating a behavior that points to "/static" and picking "static > > > files" as the handler. > > > Thanks to Massimo DiPierro for web2py and Phyo Arkar for his cherokee > > > howto. > > > I'm not much of a writer so feel free to ask for clarifications. > > > -- > > Alejandro Fanjul Fdez. > > alex.fan...@gmail.comwww.mhproject.org > >
-- 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.