Python WSGI servers 高性能选型

2017-03-17 11:04:07 +08:00
 cloudyplain

现在系统使用的是 nginx+uwsgi(开启 gevent)+bottle(gevent monkey patch),测试场景(读 redis), qps 4k 左右,请问还有性能更高、稳定的生产级别架构吗?谢谢!

6346 次点击
所在节点    Python
18 条回复
yanzixuan
2017-03-17 11:08:23 +08:00
我用 flask ,一直配合 gunicorn 的 eventlet 选项使用。貌似没毛病。
est
2017-03-17 11:15:19 +08:00
先测 redis 。
freestyle
2017-03-17 11:54:03 +08:00
mark 你的 nginx 多少个 worker? upstream? uwsgi 多少个 processes?
zhuangzhuang1988
2017-03-17 13:01:41 +08:00
Cherrypy 的 wsgi
zhuangzhuang1988
2017-03-17 13:03:39 +08:00
你都用 Bottle 了 可以看下这个
http://bottlepy.org/docs/dev/deployment.html#switching-the-server-backend 列举了好多 wsgi server
cloudyplain
2017-03-17 13:50:05 +08:00
@freestyle nginx 16 worker,upstream 2, uwsgi 8 processes, gevent 800,没做优化,但是使用 node 来测试,性能要高出很多, 1w+ qps 。
baocaixiong
2017-03-17 13:53:50 +08:00
gunicorn+meinheld
cloudyplain
2017-03-17 14:11:05 +08:00
@baocaixiong qps 能到多少?我们这个产品是 n 年前的了,想知道现在业界主流的玩法。
wuxqing
2017-03-17 16:39:04 +08:00
性能 uwsgi 算是比较高的,但是我还是建议 gunicorn ,因为我们团队碰到一些问题:
wuxqing
2017-03-17 16:40:26 +08:00
性能 uwsgi 算是比较高的,但是我还是建议 gunicorn ,因为我们团队碰到一些问题:
使用 uwsgi ,通过 zmq 发消息会丢失;有时候使用 requests 抓取网页会卡死
wuxqing
2017-03-17 16:41:33 +08:00
gunicorn+meinheld 我测试不稳定,会出现空白页面。我现在用的是 gunicorn+gevent
wuxqing
2017-03-17 16:43:29 +08:00
如果要性能高,可以试试 sanic ,速度很惊艳
gladuo
2017-03-17 20:00:00 +08:00
大概就是这个水平,用 cache 吧
jarlyyn
2017-03-17 20:22:08 +08:00
redis 用了链接池没有?

上次代码有错,连接池没有挂上。

不管什么机器死活只有几千 qps 。

改成连接池后上几 w 了。
xu1ming
2017-03-17 23:56:28 +08:00
楼主可以试试 gunicorn+meinheld 并发很高
xu1ming
2017-03-18 08:12:52 +08:00
@wuxqing 能具体描述下空白页怎么出现的吗,我用了一年多,好像没出现说白页的…
wuxqing
2017-03-18 15:24:18 +08:00
@xu1ming 当时的情况:
有几个 API 服务, flask 写的,用的是 uWSGI ,工作一直正常,但是加上日志后(用 zmq 转发),出现日志丢失的情况
然后改用 gunicorn ,默认 worker class 是 sync ,测试正常
由于性能偏低,改用 meinheld ,然后客户端有时会出现异常,输出日志发现 API 服务返回的是空白页(状态是 200 )
现在用 gunicorn+gevent ,未出现问题

顺便说下, API 服务是在 docker 中运行的
sagaxu
2017-03-19 11:02:29 +08:00
@wuxqing uwsgi 里用 zmq 需要 enable-threads 和 lazy-apps 。因为 zmq 会创建后台线程去做报文收发,操作系统的机制决定, fork 出来的子进程会丢失线程,导致新创建的 worker 进程没有 zmq 的线程,能正常工作就怪了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/348137

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX