看到书里 Nginx 的配置负载均衡的部分有这几行代码:
http {
upstream frontends {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
server { ... }
}
负载均衡不是应该配置给不同的服务器吗?同一个 server 127.0.0.1 上配置负载均衡,有什么作用呢?应该是:
server ip address 1:8000;
server ip address 2:8000;
server ip address 3:8000;
这样才能把访问压力分散到不同的服务器上去,实现负载均衡吧? 在同一台服务器 server 127.0.0.1 内部实现什么负载均衡的配置呢?是示例代码有问题吗?还是理解错了?
1
YRodT 2018-01-10 13:07:54 +08:00 via Android 1
这是让你在本机上做测试,实际当然均衡到不同的服务器
|
2
GooMS 2018-01-10 13:09:31 +08:00 via Android 1
演示用咯
|
3
sundayhk 2018-01-10 13:10:37 +08:00 via Android 1
测试使用啊。不过好像单机负载比不负载强。
|
4
Kilerd 2018-01-10 13:14:05 +08:00 4
如果你的 web 没有再用 uwsgi 或者 gunicorn 这些底层库,直接 python web.py 的话。实际上只会用到单核。
多开几个进程,upstream 他们,是可以做到负载均衡的作用的。 |
5
liudaqi 2018-01-10 13:16:15 +08:00 via iPhone 1
@sundayhk Gunicorn 这种不是可以开多个 worker 吗?前端加负载比自己的多 worker 强?
|
6
miniyao OP |
9
Kilerd 2018-01-10 13:44:37 +08:00
|
10
julyclyde 2018-01-10 16:07:57 +08:00
|
11
sujin190 2018-01-10 16:24:32 +08:00
其实这个是因为一是很多 web 服务启动的时候是多进程不能共享一个端口的,二是当多进程的时候,io 会比较集中唤醒其中一个进程,比如 tornado,大部分请求会集中到其中一个进程上,导致延时会比较高,无法充分发挥系统性能
|
12
xuzequn 2018-01-10 18:15:44 +08:00
嗯 本地测试用啦
|
13
likuku 2018-01-10 18:41:25 +08:00
看起来你是没在同一台机器上跑多个 php-fpm/java/python ...
|