最近使用uwsgi出了1些问题,因而测试下Gunicorn测试对照下
测试命令
利用启动参数
数字含义:总时间 qps 毛病数
默许模式worker: 27.5s,364,0; 26.3s,261,0
异步模式worker:31.9s,312,0; 31s,314,0
默许模式: 已降落到 不到10的qps
异步模式: 依然可以和之前的速度相当 300qps左右
Gunicorn设计 对使用同步还是异步worker,使用多少worker都有详细的建议
数字含义:总时间,qps,毛病
默许模式: 26s, 385,0;26.2s, 380, 0
异步模式: 26.8s, 373, 0; 25.9s, 385, 0
默许模式:109s,9,0; 103s,9.6,0
异步模式:104s, 9.6,0; 106s, 9.2,0 #基本跟同步模式没啥区分
uWSGI文档async说明 开头给出了1个正告:如果你的app不是时间驱动的话,使用这类模式是不对的。说白了,uwsgi的事件模式其实对应的是后真个事件框架,例如用gevent选项,后端是gevent才有效,如果后端是django,其实怎样配置没有多大区分,并没有对django的wsgi做了异步操作。
在响应时间较短的利用中,uWSGI+django是个不错的组合(测试的结果来看有略微那末1点优势),但是如果有部份阻塞要求 Gunicorn+gevent+django有非常好的效力, 如果阻塞要求比较多的话,还是用tornado重写吧。