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.