最近做 python server 的选型, gunicorn+meinheld/gevent 都不错,但在 nginx 下性能、错误率掉得有点厉害,远不如 nginx+uWSGI+gevent 稳定,请教下如何部署?
gunicorn -b :18003 -k egg:meinheld#gunicorn_worker -w 9 mybottle:app
#or
gunicorn -b :18003 -k gevent_pywsgi -w 9 mybottle:app
nginx.conf
server {
listen 8003;
location / {
proxy_pass http://127.0.0.1:18003;
}
}
谢谢!
1
ryd994 2017-04-25 21:53:53 +08:00 via Android
Nginx 后面挂普通 gunicorn 呢?
gunicorn 最初的设计就是这样 |
2
junnplus 2017-04-25 22:20:19 +08:00
没有说明机子配置就直接 -w 9 合适么
|
3
junnplus 2017-04-25 22:41:49 +08:00 1
另外 meinheld 在请求高的时候错误率确实会飙高,可以看看这个测评 https://blog.appdynamics.com/engineering/a-performance-analysis-of-python-wsgi-servers-part-2/
|
4
cloudyplain OP @junnplus 4 核,因为和问题无关就没有说明,另外 它这个评测 meinheld 是不开 keep-alive 的,我自己测试时没有这么多错误。
|
5
cloudyplain OP @ryd994 默认工作模式是阻塞调用,性能不成吧。
|
6
ryd994 2017-04-26 00:29:41 +08:00 via Android
@cloudyplain 默认设计是 Nginx 在前面 buffer
gunicorn 只需要以最快速度和 Nginx 交换数据并处理请求就行,所以阻塞不会影响性能,这是 gunicorn 官方的说法 |
7
cloudyplain OP @ryd994 并不是,一旦 app 中有 block io 这个进程就阻塞了。
|
8
tanywei 2017-04-26 10:26:49 +08:00
回复 mark 一下
|
9
PythonAnswer 2017-04-26 11:01:04 +08:00
digitalocean 有相关部署文章
nginx+gunicorn+gevent 是最稳定高效的组合 |