标签:python bottle gunicorn uwsgi
目的,测试在不同的部署方式下的性能。
硬件环境
Intel Core i5-3230M CPU @ 2.60GHz × 4
内存: 7.4 GiB
操作系统: Ubuntu 14.04 64 位
测试代码(hello.py)
from bottle import Bottle, run
app = Bottle()
@app.route(‘/hello‘)
def hello():
return "Hello World!"
if __name__ == "__main__":
run(app, host=‘localhost‘, port=8000)
uwsgi
uwsgi_python --htket=:8000 --workers=2 --wsgi-file hello.py --callable app 2>/dev/null
结果:
ab -c 100 -n 50000 "http://localhost:8000/hello"
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests
Server Software:
Server Hostname: localhost
Server Port: 8000
Document Path: /hello
Document Length: 12 bytes
Concurrency Level: 100
Time taken for tests: 3.288 seconds
Complete requests: 50000
Failed requests: 0
Total transferred: 4550000 bytes
HTML transferred: 600000 bytes
Requests per second: 15206.71 [#/sec] (mean)
Time per request: 6.576 [ms] (mean)
Time per request: 0.066 [ms] (mean, across all concurrent requests)
Transfer rate: 1351.38 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 1.3 2 6
Processing: 1 5 1.3 4 14
Waiting: 1 4 1.7 4 12
Total: 4 7 0.8 6 19
WARNING: The median and mean for the total time are not within a normal deviation
These results are probably not that reliable.
Percentage of the requests served within a certain time (ms)
50% 6
66% 7
75% 7
80% 7
90% 7
95% 7
98% 8
99% 11
100% 19 (longest request)
gunicorn
gunicorn -w 2 hello:app
结果:
ab -c 100 -n 50000 "http://localhost:8000/hello"
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests
Server Software: gunicorn/19.3.0
Server Hostname: localhost
Server Port: 8000
Document Path: /hello
Document Length: 12 bytes
Concurrency Level: 100
Time taken for tests: 8.821 seconds
Complete requests: 50000
Failed requests: 0
Total transferred: 8600000 bytes
HTML transferred: 600000 bytes
Requests per second: 5668.37 [#/sec] (mean)
Time per request: 17.642 [ms] (mean)
Time per request: 0.176 [ms] (mean, across all concurrent requests)
Transfer rate: 952.11 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 7
Processing: 3 18 2.0 17 34
Waiting: 3 17 2.0 17 34
Total: 10 18 2.0 17 36
Percentage of the requests served within a certain time (ms)
50% 17
66% 17
75% 18
80% 18
90% 19
95% 23
98% 23
99% 24
100% 36 (longest request)
总结
方案 | 并发 | 最大响应时间(ms) |
uwsgi | 15206 | 19 |
gunicorn | 5668 | 36 |
标签:python bottle gunicorn uwsgi
原文地址:http://517995.blog.51cto.com/507995/1680373