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.


Reply via email to