加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Gunicorn , uWSGI同步异步测试以及应用场景的总结

发布时间:2020-12-13 21:05:47 所属栏目:PHP教程 来源:网络整理
导读:最近使用uwsgi出了1些问题,因而测试下Gunicorn测试对照下 环境 1颗cpu 1g内存 Centos系统 Django作为后端利用,Gunicorn默许模式和异步模式,响应基本是无阻塞类型 测试的request是1个加密操作,对url中的几个参数做1个ase加密 说明:下面的摹拟阻塞模式,

最近使用uwsgi出了1些问题,因而测试下Gunicorn测试对照下

环境

  • 1颗cpu 1g内存 Centos系统 Django作为后端利用,Gunicorn默许模式和异步模式,响应基本是无阻塞类型
  • 测试的request是1个加密操作,对url中的几个参数做1个ase加密
  • 说明:下面的摹拟阻塞模式,类似于你的要求中有很多调用第3方api的场景,由于网络延迟致使响应比较长

测试命令

ab -n 10000 -c 100 -r http://127.0.0.1:8888/account/ulogin/3/?wlanuserip=127.0.0.1&wlanacname=&ssid=cmcc&wlanparameter=ffffffffffff #摹拟阻塞的模式下 -n 1000 ab -n 1000 -c 100 -r http://127.0.0.1:8888/account/ulogin/3/?wlanuserip=127.0.0.1&wlanacname=&ssid=cmcc&wlanparameter=ffffffffffff

Gunicorn 同步异步测试

利用启动参数

默许模式 gunicorn -b 0.0.0.0:8888 wsgi:application 异步模式 gunicorn -b 0.0.0.0:8888 -k gevent wsgi:application

测试统计

数字含义:总时间 qps 毛病数

要求处理无阻塞:

默许模式worker: 27.5s,364,0; 26.3s,261,0
异步模式worker:31.9s,312,0; 31s,314,0

每一个要求增加0.1秒的阻塞以后:

默许模式: 已降落到 不到10的qps
异步模式: 依然可以和之前的速度相当 300qps左右

Gunicorn设计 对使用同步还是异步worker,使用多少worker都有详细的建议

uWSGI同步异步测试

利用启动参数

#同步模式 uwsgi --http :8888 --module wsgi --process 1 -l 1000 #异步模式 uwsgi --http :8888 --module wsgi -l 1000 --async 100 --ugreen #原始的阻塞没有甚么提升

测试统计

数字含义:总时间,qps,毛病

1般要求:

默许模式: 26s,385,0;26.2s,380,0
异步模式: 26.8s,373,0; 25.9s,0

每一个要求0.1s阻塞要求下:

默许模式:109s,9,0; 103s,9.6,0
异步模式:104s,0; 106s,9.2,0 #基本跟同步模式没啥区分

uWSGI文档async说明 开头给出了1个正告:如果你的app不是时间驱动的话,使用这类模式是不对的。说白了,uwsgi的事件模式其实对应的是后真个事件框架,例如用gevent选项,后端是gevent才有效,如果后端是django,其实怎样配置没有多大区分,并没有对django的wsgi做了异步操作。

总结

在响应时间较短的利用中,uWSGI+django是个不错的组合(测试的结果来看有略微那末1点优势),但是如果有部份阻塞要求 Gunicorn+gevent+django有非常好的效力, 如果阻塞要求比较多的话,还是用tornado重写吧。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读