[Repoze-dev] Re: Benchmarking WSGI servers (was Re: Invitation to a dance)

Tres Seaver tseaver at palladion.com
Fri Sep 28 21:07:27 UTC 2007


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Chris McDonough wrote:
> On Sep 28, 2007, at 2:45 PM, Jim Fulton wrote:
> 
>> On Sep 28, 2007, at 2:08 PM, Tres Seaver wrote:
>>
>>> Yes, at the moment (for the standalone case).  Any WSGI server should
>>> do, but the Zope3 one is more solid than the wsgiutils / paste ones
>>> seemed to be for our use case.
>> How ironic.
>>
>> I really really really wish someone would do a WSGI server  
>> benchmark (set of simple tests) so that people could have a better  
>> basis for selecting servers.  I really don't want us to be in the  
>> server business. I really want to see a benchmark that proves that  
>> ours aren't the best. :) The benchmark doesn't have to be perfect.  
>> Something that just did some fairly basic obvious tests would  
>> probably shed a lot of light (and probably spur more benchmark  
>> development).
> 
> I think the most commonly used non-Apache server implementations are  
> probably Paste's "http" server and PasteScript's "wsgiutils" server.   
> And maybe one Twisted's but I haven't tried that.
> 
> With this Paste configuration:
> 
> [DEFAULT]
> debug = True
> 
> [app:test]
> use = egg:Paste#test
> 
> [server:paste]
> use = egg:Paste#http
> host = 127.0.0.1
> port = 8080
> 
> [server:wsgiutils]
> use = egg:PasteScript#wsgiutils
> host = 127.0.0.1
> port = 8080
> 
> [server:zserver]
> use = egg:repoze.zope2#zserver
> host = 127.0.0.1
> port = 8080

I added:

  [server:cherrypy]
  use = egg:Paste#cherrypy
  host = 127.0.0.1
  port = 8080

On my box, I get the following:

  Twisted.Web2   ~700 req/s
  wsgiutils      ~900 req/s
  paste         ~1500 req/s
  zope.server   ~1500 req/s
  cherrypy      ~2200 req/s

I ran the twisted server with the attached server descriptor:

  $ bin/twistd -ny bin/twisty.py

The others I ran under paster:

  $ bin/paster --server-name=<name> --app-name test etc/zope2.ini

The endpoint in each case is egg:Paste#test (I wanted 'pony', but Chris
talked me out of it).

Running against the Zope quickstart page (editing the name in
'twisty.py', switching --app-name to 'zope'):

  Twisted.Web2   ~160 req/s
  wsgiutils      ~165 req/s
  paste          ~220 req/s
  zope.server    ~225 req/s
  cherrypy       ~240 req/s

Tests run against all settings via:

  $ ab -n 1000 -c 10 http://localhost:8080/


Tres.
- --
===================================================================
Tres Seaver          +1 540-429-0999          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFG/W0P+gerLs4ltQ4RAif5AJ9cRh2yZxVvOhSJmima/NIlPk+aHgCeLuBp
Xu5WZOe0JMYcesVq2wguMQw=
=tngk
-----END PGP SIGNATURE-----
_______________________________________________
Repoze-dev mailing list
Repoze-dev at lists.repoze.org
http://lists.repoze.org/mailman/listinfo/repoze-dev



More information about the Repoze-dev mailing list