1
wingyiu 2018-11-26 11:07:26 +08:00
文档有写
|
2
wizardoz 2018-11-26 11:09:59 +08:00
http 的话,nginx 和 uwsgi 中间走的是 http 协议,文本
socket 的话,nginx 和 uwsgi 中间走的是 wsgi 协议,二进制 感觉 wsgi 协议效率会更高一点 |
3
knightdf 2018-11-26 14:32:35 +08:00 1
通信协议不一样,就这,http 的多了包校验之类的
|
4
xpresslink 2018-11-26 15:20:59 +08:00 1
连接方式其实有三种
unix Socket,这个性能效率最高,直接内存交换,但必须应用和 NGX 同在一台服务器上 TCP Socket, 二进制包传递 HTTP, 是基于 TCP 上面的一层文本协议 |
5
chengxiao OP @xpresslink 感谢,其实问这个问题是因为现在想用 docker 来部署,想把 docker+uwsgi 放一个容器,然后 nginx 单独一个容器,似乎这样部署就只能用 http 了
|
6
allen0125 2018-11-26 16:33:11 +08:00
在文档里面看到一句
Using Unix sockets instead of ports So far we have used a TCP port socket, because it ’ s simpler, but in fact it ’ s better to use Unix sockets than ports - there ’ s less overhead. docker 部署的话,容器里面如果没有 nginx,静态文件怎么搞啊。 |
7
Neojoke 2018-11-26 17:13:58 +08:00
生产环境百分之九十九是 unix Socket 的方式,ngnix 是做反向代理用的,因为 uwsgi 不具备路由、过滤等方向代理功能,但论执行效率,可以做性能测试,如果是 http 协议的话,性能是没有 unix Socket 方式好的
|
8
xpresslink 2018-11-26 18:25:33 +08:00
@chengxiao 用 docker 来部署一般用 TCP socket,如果容器用主机网络模式,用个不冲突的端口号就可以了。
|