flask django tonado aiohttp uwsgi 裸奔测试

1 篇文章 0 订阅
  • 测试局限性:

虚拟机 测试浮动较大
接口没有做任何操作直接返回

  • 服务器:
Ubuntu 14.04.5 LTS
单核 1G
  • flask
from flask import Flask
app = Flask(__name__)
@app.route("/api/active")
def active():
    """
    """
    return "active"
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000, debug = False)

ab -n 2000 -c 130 http://192.168.1.221:5000/api/active

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 192.168.1.221 (be patient)
Completed 2000 requests
Completed 4000 requests
Completed 6000 requests
Completed 8000 requests
Completed 10000 requests
Completed 12000 requests
Completed 14000 requests
Completed 16000 requests
Completed 18000 requests
Completed 20000 requests
Finished 20000 requests


Server Software:        Werkzeug/0.14.1
Server Hostname:        192.168.1.221
Server Port:            5000

Document Path:          /api/active
Document Length:        6 bytes

Concurrency Level:      130
Time taken for tests:   50.288 seconds
Complete requests:      20000
Failed requests:        0
Total transferred:      3180000 bytes
HTML transferred:       120000 bytes
Requests per second:    397.71 [#/sec] (mean)
Time per request:       326.874 [ms] (mean)
Time per request:       2.514 [ms] (mean, across all concurrent requests)
Transfer rate:          61.75 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   0.9      1      23
Processing:     9  325  29.2    322     641
Waiting:        9  324  29.2    322     641
Total:         15  326  29.1    323     664

Percentage of the requests served within a certain time (ms)
  50%    323
  66%    328
  75%    334
  80%    340
  90%    349
  95%    361
  98%    381
  99%    407
 100%    664 (longest request)

  • django

ab -n 2000 -c 35 http://192.168.1.221:5001/api/active/

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 192.168.1.221 (be patient)
Completed 200 requests
Completed 400 requests
Completed 600 requests
Completed 800 requests
Completed 1000 requests
Completed 1200 requests
Completed 1400 requests
Completed 1600 requests
Completed 1800 requests
Completed 2000 requests
Finished 2000 requests


Server Software:        WSGIServer/0.2
Server Hostname:        192.168.1.221
Server Port:            5001

Document Path:          /api/active/
Document Length:        44 bytes

Concurrency Level:      35
Time taken for tests:   15.801 seconds
Complete requests:      2000
Failed requests:        0
Total transferred:      998000 bytes
HTML transferred:       88000 bytes
Requests per second:    126.57 [#/sec] (mean)
Time per request:       276.517 [ms] (mean)
Time per request:       7.901 [ms] (mean, across all concurrent requests)
Transfer rate:          61.68 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  120 480.8      1    7013
Processing:    18  131 178.0     96    3329
Waiting:        7  124 177.5     88    3321
Total:         19  251 531.1     99    7124

Percentage of the requests served within a certain time (ms)
  50%     99
  66%    112
  75%    126
  80%    137
  90%    332
  95%   1103
  98%   2631
  99%   3102
 100%   7124 (longest request)
  • tonado
# coding:utf-8

import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options # 新导入的options模块

tornado.options.define("port", default=5002, type=int, help="run server on the given port.") # 定义服务器监听端口选项

class IndexHandler(tornado.web.RequestHandler):
    """主路由处理类"""
    def get(self):
        """对应http的get请求方式"""
        self.write("active")

if __name__ == "__main__":
    tornado.options.parse_command_line()
    app = tornado.web.Application([
        (r"/api/active", IndexHandler),
    ])
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(tornado.options.options.port, address="0.0.0.0")
    tornado.ioloop.IOLoop.current().start()

ab -n 4000 -c 1150 http://192.168.1.221:5002/api/active

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 192.168.1.221 (be patient)
Completed 400 requests
Completed 800 requests
Completed 1200 requests
Completed 1600 requests
Completed 2000 requests
Completed 2400 requests
Completed 2800 requests
Completed 3200 requests
Completed 3600 requests
Completed 4000 requests
Finished 4000 requests


Server Software:        TornadoServer/6.0.3
Server Hostname:        192.168.1.221
Server Port:            5002

Document Path:          /api/active
Document Length:        6 bytes

Concurrency Level:      1150
Time taken for tests:   12.409 seconds
Complete requests:      4000
Failed requests:        0
Total transferred:      800000 bytes
HTML transferred:       24000 bytes
Requests per second:    322.35 [#/sec] (mean)
Time per request:       3567.512 [ms] (mean)
Time per request:       3.102 [ms] (mean, across all concurrent requests)
Transfer rate:          62.96 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0 1107 1798.2     47    7019
Processing:   236  636 169.5    613    1144
Waiting:      236  636 169.4    613    1144
Total:        285 1743 1857.2    888    8123

Percentage of the requests served within a certain time (ms)
  50%    888
  66%   1560
  75%   1656
  80%   1818
  90%   3728
  95%   7720
  98%   7997
  99%   8061
 100%   8123 (longest request)

  • aiohttp
from aiohttp import web

async def handle(request):
    return web.Response(text="active")

app = web.Application()
app.add_routes([web.get('/api/active', handle),
                ])

web.run_app(app)

ab -n 4000 -c 1150 http://192.168.1.221:8080/api/active

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 192.168.1.221 (be patient)
Completed 400 requests
Completed 800 requests
Completed 1200 requests
Completed 1600 requests
Completed 2000 requests
Completed 2400 requests
Completed 2800 requests
Completed 3200 requests
Completed 3600 requests
Completed 4000 requests
Finished 4000 requests


Server Software:        Python/3.6
Server Hostname:        192.168.1.221
Server Port:            8080

Document Path:          /api/active
Document Length:        6 bytes

Concurrency Level:      1150
Time taken for tests:   8.754 seconds
Complete requests:      4000
Failed requests:        0
Total transferred:      624000 bytes
HTML transferred:       24000 bytes
Requests per second:    456.96 [#/sec] (mean)
Time per request:       2516.637 [ms] (mean)
Time per request:       2.188 [ms] (mean, across all concurrent requests)
Transfer rate:          69.61 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  414 1142.4      1    7018
Processing:   275  777 387.8    677    1882
Waiting:      170  672 368.8    574    1803
Total:        304 1192 1281.2    678    7822

Percentage of the requests served within a certain time (ms)
  50%    678
  66%    757
  75%    903
  80%   1856
  90%   2832
  95%   3718
  98%   4373
  99%   7811
 100%   7822 (longest request)

#   uwsgi --http :9090 --wsgi-file uwsig_test.py --listen 2048
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]

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 192.168.1.221 (be patient)
Completed 1400 requests
Completed 2800 requests
Completed 4200 requests
Completed 5600 requests
Completed 7000 requests
Completed 8400 requests
Completed 9800 requests
Completed 11200 requests
Completed 12600 requests
Completed 14000 requests
Finished 14000 requests


Server Software:        
Server Hostname:        192.168.1.221
Server Port:            9090

Document Path:          /
Document Length:        11 bytes

Concurrency Level:      6000
Time taken for tests:   16.313 seconds
Complete requests:      14000
Failed requests:        0
Total transferred:      770000 bytes
HTML transferred:       154000 bytes
Requests per second:    858.19 [#/sec] (mean)
Time per request:       6991.470 [ms] (mean)
Time per request:       1.165 [ms] (mean, across all concurrent requests)
Transfer rate:          46.09 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  558 1295.1     69    7022
Processing:   178 4492 4528.2   2357   14287
Waiting:      165 4490 4528.6   2355   14286
Total:        370 5050 4933.3   2395   16034

Percentage of the requests served within a certain time (ms)
  50%   2395
  66%   3119
  75%   5585
  80%  12040
  90%  14289
  95%  14890
  98%  15834
  99%  15958
 100%  16034 (longest request)
  • 并发:
    uwsgi 6000 >> aiohttp 1150 == tornado 1150 >> flask 130 >> django 35

  • qps
    uwsgi 858 >> aiohttp 456 >> tornado 322 == flask 397 >> django 126


todo go node …

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值