2008年01月08日 星期二 08:50
Here is the configuration files and the code used for both tests.
--------------------------------------------
Configuration file for Lighttpd
--------------------------------------------
server.modules = (
"mod_rewrite",
"mod_fastcgi",
)
server.document-root = "/var/www/"
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
## virtual directory listings
dir-listing.encoding = "utf-8"
server.dir-listing = "enable"
server.username = "www-data"
server.groupname = "www-data"
fastcgi.server = ( "/code-fastcgi.py" =>
(( "socket" => "/tmp/fastcgi.socket",
"bin-path" => "/var/www/code-fastcgi.py",
"max-procs" => 1
))
)
url.rewrite-once = (
"^/favicon.ico$" => "/static/favicon.ico",
"^/static/(.*)$" => "/static/$1",
"^/(.*)$" => "/code-fastcgi.py/$1",
)
--------------------------------------------
Configuration file for Nginx
--------------------------------------------
worker_processes 2;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
env HOME;
env PYTHONPATH=/usr/bin/python;
http {
include conf/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
wsgi_python_optimize 2;
wsgi_python_executable /usr/bin/python;
wsgi_python_home /usr/;
wsgi_enable_subinterpreters on;
server {
listen 80;
server_name localhost;
include conf/wsgi_vars;
location / {
#client_body_buffer_size 50;
wsgi_pass /usr/local/nginx/nginx.py;
wsgi_pass_authorization off;
wsgi_script_reloading on;
wsgi_use_main_interpreter on;
}
location /wsgi {
#client_body_buffer_size 50;
wsgi_var TEST test;
wsgi_var FOO bar;
wsgi_var EMPTY "";
# override existing HTTP_ variables
wsgi_var HTTP_USER_AGENT "nginx";
wsgi_var HTTP_COOKIE $http_cookie;
wsgi_pass /usr/local/nginx/nginx-2.py main;
wsgi_pass_authorization on;
wsgi_script_reloading off;
wsgi_use_main_interpreter off;
}
location /wsgi-webpy {
wsgi_pass /usr/local/nginx/webpy-code.py;
}
}
}
--------------------------------------------
Code for Lighttpd
--------------------------------------------
#!/usr/bin/env python
import web
urls = (
'/(.*)', 'hello'
)
class hello:
def GET(self, name):
i = web.input(times=1)
if not name: name = 'world'
for c in xrange(int(i.times)):
print 'Hello,', name+'!'
if __name__ == "__main__": web.run(urls, globals())
--------------------------------------------
Code for Nginx
--------------------------------------------
import web
urls = (
'/(.*)', 'hello'
)
class hello:
def GET(self, name):
i = web.input(times=1)
if not name: name = 'world'
for c in xrange(int(i.times)): print 'Hello,', name+'!'
application = web.wsgifunc(web.webpyfunc(urls, globals()))
---------- Forwarded message ----------
From: David Cancel <dcancel在gmail.com>
Date: Jan 7, 2008 11:55 PM
Subject: [webpy] Nginx + WSGI == Blazing Fast!
To: "web.py" <webpy在googlegroups.com>
I know.. I know... Simple benchmarks mean nothing but I couldn't help
playing with the new(ish) mod_wsgi module for my favorite webserver
Nginx.
Nginx: http://nginx.net/
Nginx mod_wsgi module: http://wiki.codemongers.com/NginxNgxWSGIModule
I tested Nginx vs. the recommended setup of Lighttpd/Fastcgi. These
very simple and flawed tests were run on Debian Etch running under
virtualization (Parallels) on my Macbook Pro. Hey I said they were
flawed.. :-)
The results show Nginx/WSGI performing 3x as fast as Lighttpd/Fastcgi,
over 1000 requests per second!!
I tested both with Keep-Alives on and off. I'm not sure why Nginx/WSGI
performed 2x as fast with keep-alives on.
*********** Full results below *************
--------------------------------------------
Nginx 0.5.34 - Keepalives On
---------------------------------------------
ab -c 10 -n 1000 -k http://10.211.55.4/wsgi-webpy/david
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Server Software: nginx/
0.5.34
Server Hostname: 10.211.55.4
Server Port: 80
Document Path: /wsgi-webpy/david
Document Length: 14 bytes
Concurrency Level: 10
Time taken for tests: 0.970 seconds
Complete requests: 1000
Failed requests: 0
Broken pipe errors: 0
Keep-Alive requests: 1001
Total transferred: 136136 bytes
HTML transferred: 14014 bytes
** Requests per second: 1030.93 [#/sec] (mean) **
Time per request: 9.70 [ms] (mean)
Time per request: 0.97 [ms] (mean, across all concurrent
requests)
Transfer rate: 140.35 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.4 0 5
Processing: 1 9 4.3 9 26
Waiting: 0 9 4.2 9 25
Total: 1 9 4.3 9 26
Percentage of the requests served within a certain time (ms)
50% 9
66% 11
75% 12
80% 13
90% 15
95% 17
98% 20
99% 22
100% 26 (last request)
--------------------------------------------
Nginx 0.5.34 - No Keepalives
---------------------------------------------
ab -c 10 -n 1000 http://10.211.55.4/wsgi-webpy/david
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Server Software: nginx/
0.5.34
Server Hostname: 10.211.55.4
Server Port: 80
Document Path: /wsgi-webpy/david
Document Length: 14 bytes
Concurrency Level: 10
Time taken for tests: 2.378 seconds
Complete requests: 1000
Failed requests: 0
Broken pipe errors: 0
Total transferred: 131131 bytes
HTML transferred: 14014 bytes
** Requests per second: 420.52 [#/sec] (mean) **
Time per request: 23.78 [ms] (mean)
Time per request: 2.38 [ms] (mean, across all concurrent
requests)
Transfer rate: 55.14 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 4 2.9 3 26
Processing: 8 19 8.8 18 136
Waiting: 0 19 8.8 17 135
Total: 8 23 8.9 21 142
Percentage of the requests served within a certain time (ms)
50% 21
66% 24
75% 26
80% 28
90% 34
95% 40
98% 45
99% 47
100% 142 (last request)
*********************************************************************
--------------------------------------------
Lighttpd 1.4.13 - Keepalives On
---------------------------------------------
ab -c 10 -n 1000 -k http://10.211.55.4/david
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Server Software: lighttpd/
1.4.13
Server Hostname: 10.211.55.4
Server Port: 80
Document Path: /david
Document Length: 14 bytes
Concurrency Level: 10
Time taken for tests: 2.901 seconds
Complete requests: 1000
Failed requests: 1
(Connect: 0, Length: 1, Exceptions: 0)
Broken pipe errors: 0
Keep-Alive requests: 942
Total transferred: 138711 bytes
HTML transferred: 14001 bytes
** Requests per second: 344.71 [#/sec] (mean) **
Time per request: 29.01 [ms] (mean)
Time per request: 2.90 [ms] (mean, across all concurrent
requests)
Transfer rate: 47.81 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 1.1 0 21
Processing: 3 28 29.3 22 385
Waiting: 3 28 29.3 22 385
Total: 3 28 29.3 22 385
Percentage of the requests served within a certain time (ms)
50% 22
66% 26
75% 31
80% 34
90% 48
95% 60
98% 100
99% 164
100% 385 (last request)
--------------------------------------------
Lighttpd 1.4.13 - No Keepalives
---------------------------------------------
ab -c 10 -n 1000 http://10.211.55.4/david
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Server Software: lighttpd/
1.4.13
Server Hostname: 10.211.55.4
Server Port: 80
Document Path: /david
Document Length: 14 bytes
Concurrency Level: 10
Time taken for tests: 4.017 seconds
Complete requests: 1000
Failed requests: 1
(Connect: 0, Length: 1, Exceptions: 0)
Broken pipe errors: 0
Total transferred: 134269 bytes
HTML transferred: 14029 bytes
** Requests per second: 248.94 [#/sec] (mean) **
Time per request: 40.17 [ms] (mean)
Time per request: 4.02 [ms] (mean, across all concurrent
requests)
Transfer rate: 33.43 [Kbytes/sec] received
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 3 4.9 2 68
Processing: 3 36 49.6 28 852
Waiting: 2 35 49.6 28 852
Total: 3 39 50.1 30 855
Percentage of the requests served within a certain time (ms)
50% 30
66% 36
75% 41
80% 44
90% 61
95% 87
98% 148
99% 252
100% 855 (last request)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "web.py" group.
To post to this group, send email to webpy在googlegroups.com
To unsubscribe from this group, send email to webpy-unsubscribe在googlegroups.com
For more options, visit this group at http://groups.google.com/group/webpy?hl=en
-~----------~----~----~----~------~----~------~--~---
--
'''Time is unimportant, only life important!
过程改进乃是开始催生可促生靠谱的人的组织!
'''http://zoomquiet.org
博 @ http://blog.zoomquiet.org/pyblosxom/
维 @ http://wiki.woodpecker.org.cn/moin/ZoomQuiet
豆 @ http://www.douban.com/people/zoomq/
看 @ http://zoomq.haokanbu.com/
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Pls. usage OOo to replace M$ Office. http://zh.openoffice.org
Pls. usage 7-zip to replace WinRAR/WinZip. http://7-zip.org
You can get the truely Freedom 4 software.
2008年01月14日 星期一 13:19
AMAZING .....VERRRRY STRONG 2008/1/8, Zoom. Quiet <zoom.quiet在gmail.com>: > > Here is the configuration files and the code used for both tests. > > -------------------------------------------- > Configuration file for Lighttpd > -------------------------------------------- > server.modules = ( > "mod_rewrite", > "mod_fastcgi", > ) > server.document-root = "/var/www/" > server.errorlog = "/var/log/lighttpd/error.log" > server.pid-file = "/var/run/lighttpd.pid" > > ## virtual directory listings > dir-listing.encoding = "utf-8" > server.dir-listing = "enable" > server.username = "www-data" > server.groupname = "www-data" > > fastcgi.server = ( "/code-fastcgi.py" => > (( "socket" => "/tmp/fastcgi.socket", > "bin-path" => "/var/www/code-fastcgi.py", > "max-procs" => 1 > )) > ) > > url.rewrite-once = ( > "^/favicon.ico$" => "/static/favicon.ico", > "^/static/(.*)$" => "/static/$1", > "^/(.*)$" => "/code-fastcgi.py/$1", > ) > > -------------------------------------------- > Configuration file for Nginx > -------------------------------------------- > worker_processes 2; > error_log logs/error.log info; > pid logs/nginx.pid; > > events { > worker_connections 1024; > } > > > env HOME; > env PYTHONPATH=/usr/bin/python; > > http { > include conf/mime.types; > default_type application/octet-stream; > > sendfile on; > keepalive_timeout 65; > > wsgi_python_optimize 2; > wsgi_python_executable /usr/bin/python; > wsgi_python_home /usr/; > wsgi_enable_subinterpreters on; > > server { > listen 80; > server_name localhost; > > > include conf/wsgi_vars; > > location / { > #client_body_buffer_size 50; > wsgi_pass /usr/local/nginx/nginx.py; > > wsgi_pass_authorization off; > wsgi_script_reloading on; > wsgi_use_main_interpreter on; > } > > location /wsgi { > #client_body_buffer_size 50; > wsgi_var TEST test; > wsgi_var FOO bar; > wsgi_var EMPTY ""; > # override existing HTTP_ variables > wsgi_var HTTP_USER_AGENT "nginx"; > wsgi_var HTTP_COOKIE $http_cookie; > > wsgi_pass /usr/local/nginx/nginx-2.py main; > > wsgi_pass_authorization on; > wsgi_script_reloading off; > wsgi_use_main_interpreter off; > } > > location /wsgi-webpy { > wsgi_pass /usr/local/nginx/webpy-code.py; > } > } > } > > -------------------------------------------- > Code for Lighttpd > -------------------------------------------- > #!/usr/bin/env python > > import web > > urls = ( > '/(.*)', 'hello' > ) > > class hello: > def GET(self, name): > i = web.input(times=1) > if not name: name = 'world' > for c in xrange(int(i.times)): > print 'Hello,', name+'!' > > if __name__ == "__main__": web.run(urls, globals()) > > -------------------------------------------- > Code for Nginx > -------------------------------------------- > import web > > urls = ( > '/(.*)', 'hello' > ) > > class hello: > def GET(self, name): > i = web.input(times=1) > if not name: name = 'world' > for c in xrange(int(i.times)): print 'Hello,', name+'!' > > application = web.wsgifunc(web.webpyfunc(urls, globals())) > > > ---------- Forwarded message ---------- > From: David Cancel <dcancel在gmail.com> > Date: Jan 7, 2008 11:55 PM > Subject: [webpy] Nginx + WSGI == Blazing Fast! > To: "web.py" <webpy在googlegroups.com> > > > > I know.. I know... Simple benchmarks mean nothing but I couldn't help > playing with the new(ish) mod_wsgi module for my favorite webserver > Nginx. > > Nginx: http://nginx.net/ > Nginx mod_wsgi module: http://wiki.codemongers.com/NginxNgxWSGIModule > > I tested Nginx vs. the recommended setup of Lighttpd/Fastcgi. These > very simple and flawed tests were run on Debian Etch running under > virtualization (Parallels) on my Macbook Pro. Hey I said they were > flawed.. :-) > > The results show Nginx/WSGI performing 3x as fast as Lighttpd/Fastcgi, > over 1000 requests per second!! > > I tested both with Keep-Alives on and off. I'm not sure why Nginx/WSGI > performed 2x as fast with keep-alives on. > > *********** Full results below ************* > > -------------------------------------------- > Nginx 0.5.34 - Keepalives On > --------------------------------------------- > ab -c 10 -n 1000 -k http://10.211.55.4/wsgi-webpy/david > This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3 > > Server Software: nginx/ > 0.5.34 > Server Hostname: 10.211.55.4 > Server Port: 80 > > Document Path: /wsgi-webpy/david > Document Length: 14 bytes > > Concurrency Level: 10 > Time taken for tests: 0.970 seconds > Complete requests: 1000 > Failed requests: 0 > Broken pipe errors: 0 > Keep-Alive requests: 1001 > Total transferred: 136136 bytes > HTML transferred: 14014 bytes > ** Requests per second: 1030.93 [#/sec] (mean) ** > Time per request: 9.70 [ms] (mean) > Time per request: 0.97 [ms] (mean, across all concurrent > requests) > Transfer rate: 140.35 [Kbytes/sec] received > > Connnection Times (ms) > min mean[+/-sd] median max > Connect: 0 0 0.4 0 5 > Processing: 1 9 4.3 9 26 > Waiting: 0 9 4.2 9 25 > Total: 1 9 4.3 9 26 > > Percentage of the requests served within a certain time (ms) > 50% 9 > 66% 11 > 75% 12 > 80% 13 > 90% 15 > 95% 17 > 98% 20 > 99% 22 > 100% 26 (last request) > > -------------------------------------------- > Nginx 0.5.34 - No Keepalives > --------------------------------------------- > ab -c 10 -n 1000 http://10.211.55.4/wsgi-webpy/david > This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3 > > Server Software: nginx/ > 0.5.34 > Server Hostname: 10.211.55.4 > Server Port: 80 > > Document Path: /wsgi-webpy/david > Document Length: 14 bytes > > Concurrency Level: 10 > Time taken for tests: 2.378 seconds > Complete requests: 1000 > Failed requests: 0 > Broken pipe errors: 0 > Total transferred: 131131 bytes > HTML transferred: 14014 bytes > ** Requests per second: 420.52 [#/sec] (mean) ** > Time per request: 23.78 [ms] (mean) > Time per request: 2.38 [ms] (mean, across all concurrent > requests) > Transfer rate: 55.14 [Kbytes/sec] received > > Connnection Times (ms) > min mean[+/-sd] median max > Connect: 0 4 2.9 3 26 > Processing: 8 19 8.8 18 136 > Waiting: 0 19 8.8 17 135 > Total: 8 23 8.9 21 142 > > Percentage of the requests served within a certain time (ms) > 50% 21 > 66% 24 > 75% 26 > 80% 28 > 90% 34 > 95% 40 > 98% 45 > 99% 47 > 100% 142 (last request) > > ********************************************************************* > > -------------------------------------------- > Lighttpd 1.4.13 - Keepalives On > --------------------------------------------- > ab -c 10 -n 1000 -k http://10.211.55.4/david > This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3 > > Server Software: lighttpd/ > 1.4.13 > Server Hostname: 10.211.55.4 > Server Port: 80 > > Document Path: /david > Document Length: 14 bytes > > Concurrency Level: 10 > Time taken for tests: 2.901 seconds > Complete requests: 1000 > Failed requests: 1 > (Connect: 0, Length: 1, Exceptions: 0) > Broken pipe errors: 0 > Keep-Alive requests: 942 > Total transferred: 138711 bytes > HTML transferred: 14001 bytes > ** Requests per second: 344.71 [#/sec] (mean) ** > Time per request: 29.01 [ms] (mean) > Time per request: 2.90 [ms] (mean, across all concurrent > requests) > Transfer rate: 47.81 [Kbytes/sec] received > > Connnection Times (ms) > min mean[+/-sd] median max > Connect: 0 0 1.1 0 21 > Processing: 3 28 29.3 22 385 > Waiting: 3 28 29.3 22 385 > Total: 3 28 29.3 22 385 > > Percentage of the requests served within a certain time (ms) > 50% 22 > 66% 26 > 75% 31 > 80% 34 > 90% 48 > 95% 60 > 98% 100 > 99% 164 > 100% 385 (last request) > > -------------------------------------------- > Lighttpd 1.4.13 - No Keepalives > --------------------------------------------- > ab -c 10 -n 1000 http://10.211.55.4/david > This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3 > > Server Software: lighttpd/ > 1.4.13 > Server Hostname: 10.211.55.4 > Server Port: 80 > > Document Path: /david > Document Length: 14 bytes > > Concurrency Level: 10 > Time taken for tests: 4.017 seconds > Complete requests: 1000 > Failed requests: 1 > (Connect: 0, Length: 1, Exceptions: 0) > Broken pipe errors: 0 > Total transferred: 134269 bytes > HTML transferred: 14029 bytes > ** Requests per second: 248.94 [#/sec] (mean) ** > Time per request: 40.17 [ms] (mean) > Time per request: 4.02 [ms] (mean, across all concurrent > requests) > Transfer rate: 33.43 [Kbytes/sec] received > > Connnection Times (ms) > min mean[+/-sd] median max > Connect: 0 3 4.9 2 68 > Processing: 3 36 49.6 28 852 > Waiting: 2 35 49.6 28 852 > Total: 3 39 50.1 30 855 > > Percentage of the requests served within a certain time (ms) > 50% 30 > 66% 36 > 75% 41 > 80% 44 > 90% 61 > 95% 87 > 98% 148 > 99% 252 > 100% 855 (last request) > --~--~---------~--~----~------------~-------~--~----~ > You received this message because you are subscribed to the Google > Groups "web.py" group. > To post to this group, send email to webpy在googlegroups.com > To unsubscribe from this group, send email to > webpy-unsubscribe在googlegroups.com > For more options, visit this group at > http://groups.google.com/group/webpy?hl=en > -~----------~----~----~----~------~----~------~--~--- > > > > > -- > '''Time is unimportant, only life important! > 过程改进乃是开始催生可促生靠谱的人的组织! > '''http://zoomquiet.org > 博 @ http://blog.zoomquiet.org/pyblosxom/ > 维 @ http://wiki.woodpecker.org.cn/moin/ZoomQuiet > 豆 @ http://www.douban.com/people/zoomq/ > 看 @ http://zoomq.haokanbu.com/ > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > Pls. usage OOo to replace M$ Office. http://zh.openoffice.org > Pls. usage 7-zip to replace WinRAR/WinZip. http://7-zip.org > You can get the truely Freedom 4 software. > _______________________________________________ > python-chinese > Post: send python-chinese在lists.python.cn > Subscribe: send subscribe to python-chinese-request在lists.python.cn > Unsubscribe: send unsubscribe to python-chinese-request在lists.python.cn > Detail Info: http://python.cn/mailman/listinfo/python-chinese -------------- 下一部分 -------------- 一个HTML附件被移除... URL: http://python.cn/pipermail/python-chinese/attachments/20080114/a1adaceb/attachment-0001.html
Zeuux © 2025
京ICP备05028076号