如上所示,假如个中一个分类在60S内的哀求过多,则可以通过以下改造来滑腻哀求。
- local consistent_key = args.cat
- if not consistent_key or consistent_key == '' then
- consistent_key = ngx_var.request_uri
- end
- -- 大于5000时,天生新key
- local value = balancing_cache:get(consistent_key)
- if value > 5000 then
- consistent_key = consistent_key .. '_' .. value
- end
- if not value then
- success, err = balancing_cache:set(consistent_key, 1, 60)
- else
- newval, err = balancing_cache:incr(consistent_key, 1)
- end
least_conn:将哀求负载平衡到最小活泼毗连的上游处事器。假如设置的处事器较少,则转为基于权重轮询的算法。
除了上面的负载平衡计策,贸易版的Nginx还提供了least_time,就是基于最小均匀相应时刻举办负载平衡。
失败重试
失败重试首要包括两部门设置:upstream server和proxy_pass。
- upstream backend {
- server 192.168.0.1:8080 max_fails=2 fail_timeout=10s weight=1;
- server 192.168.0.2:8080 max_fails=2 fail_timeout=10s weight=1;
- }
通过设置上游处事器的max_fails和fail_timeout,来指定每个上游处事器,当fail_timeout时刻内失败了max_fails次哀求,则以为该上游处事器不行用。然后剔除该处事器,fail_timeout时刻后会再次将该处事器插手到存活列表中举办重试。
- location /test {
- proxy_connect_timeout 5s;
- proxy_read_timeout 5s;
- proxy_send_timeout 5s;
- proxy_next_upstream error timeout;
- proxy_next_upstream_timeout 10s;
- proxy_next_upstream_tries 2;
- proxy_pass http://backend;
- add_header upstream_addr $upstream_addr;
- }
上述参数详情请拜见:《漫衍式体系超时重试》
康健搜查
Nginx对上游处事器的康健搜查回收的是惰性计策。(Nginx贸易版提供了health_check的主动搜查)社区版的Nginx可以集成nginx_upstream_check_module举办主动康健搜查。设置如下:
TCP 心跳搜查
- upstream backend {
- server 192.168.0.1:8080 weight=1;
- server 192.168.0.2:8080 weight=2;
- check interval=3000 rise=1 fall=3 timeout=2000 type=tcp;
- }
- interval:检测隔断时刻,此处设置了每隔3s检测一次。
- fall:检测失败几多次后,上游处事器被标识为不存活。
- rise:检测乐成几多次后,上游处事器被标识为存活,并可以处理赏罚哀求。
- timeout:检测哀求超时时刻设置。
HTTP心跳搜查
- upstream backend {
- server 192.168.0.1:8080 weight=1;
- server 192.168.0.2:8080 weight=2;
- check interval=3000 rise=1 fall=3 timeout=2000 type=http;
- check_http_send "HEAD /status HTTP/1.0rnrn";
- check_http_expect_alive http_2xx http_3xx;
- }
HTTP心跳设置比TCP特殊多了2个设置:
- check_http_send:康健搜查时所发送的哀求内容。
- check_http_expect_alive:当上游处事器返回匹配的状态码,就以为上游处事器存活。
这内里必要留意的是,康健搜查的时距离断不宜过短。不然有也许会造成拥堵,愈乃至造成上游处事器挂掉。
长毗连设置
可以行使 keepalive 指令设置Nginx与上游处事器可缓存的空闲毗连的最大数目。当超出数目时,最近起码行使的毗连将被封锁。keepalive指令不限定Worker历程与上游处事器的总毗连数。
- upstream backend {
- server 192.168.0.1:8080 weight=1;
- server 192.168.0.2:8080 weight=2 backup;
- keepalive 100;
- }
要想与上游处事器成立长毗连,还必要如下设置:
- location / {
- # 支持 keep-alive
- proxy_http_version 1.1;
- proxy_set_header Connection "";
- proxy_pass http://backend;
- }
总长毗连数=空闲毗连池+开释毗连池。起首,长毗连设置不会限定Worker历程可以打开的总毗连数(超出的作为短毗连)。毗连池必要按照差异的场景举办配置。
空闲毗连池太小,毗连不足用,就必要不绝的从头成立毗连;假如太大,就会造成还没用就超时了。
其他设置 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|