背景
使用中开发了一个flask项目,为了提升并发能力,使用tornado托管,然后使用nginx来做反向代理并直接处理静态文件的分发。
测试过程
服务器环境是 Windows Server 2008 R2, 8C, 16G。
编码环境 python3
压测使用Tsung
直接访问项目首页html,存在加载多个js,css等文件。
1 、直接对flask压测,并发用户500
效果如下:
Name
highest 10sec mean
lowest 10sec mean
Highest Rate
Mean Rate
Mean
Count
connect
32.96 msec
31.69 msec
27 / sec
2.55 / sec
31.96 msec
1700
page
9mn 12sec
3.52 sec
15.9 / sec
1.84 / sec
49.87 sec
1201
request
9mn 12sec
3.52 sec
15.9 / sec
1.84 / sec
49.87 sec
1201
session
9mn 42sec
9mn 9sec
0.333333333333333 / sec
0.22 / sec
9mn 9sec
1
Code
Highest Rate
Mean Rate
Total number
200
16 / sec
1.39 / sec
935
500
5.9 / sec
0.39 / sec
225
可以看出效果是比较差的,其实还没压测完就报了个内存错误,程序挂了。
2、使用tornado部署,并发用户500
部署代码如下:
#coding=utf-8
#!/usr/bin/python
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from manage import app
http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000) #flask默认的端口
IOLoop.instance().start()
再压测一次,还是500的并发,效果如下:
Name
highest 10sec mean
lowest 10sec mean
Highest Rate
Mean Rate
Mean
Count
connect
0.10 sec
32.68 msec
47.1 / sec
39.27