Nginx 负载均衡 upstream不精准

nginx upstream 负载均衡一会有用一会失效#

nginx 入口服务器 (用于分发请求到各个服务器)

server
{
    listen 443 ssl http2;
    server_name xxx.cn;
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    ssl_certificate    /www/server/panel/vhost/cert/xxx.cn/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/xxx.cn/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    error_page 497  https://$host$request_uri;
    #SSL-END

    location / {
        proxy_http_version 1.1;
        proxy_set_header Connection "keep-alive";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://callback.com;
        index index.php;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log off;
        access_log /dev/null; 
    }
    access_log  /dev/null;
    error_log  /www/wwwlogs/zhengnengliang01.cn.error.log;
}

upstream 配置:(共有 10 台服务器 此处不做过多书写)

  upstream callback.com{
   server a.x.x.x:9001 weight=1;
   server b.x.x.:9001 weight=2;
   ...
   ...
} 

反向代理服务器配置:(a)

server
{
    listen 9001;
    server_name a.x.x.x;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/VideoApp/public;
    include enable-php-74.conf;
    include /www/server/panel/vhost/rewrite/a.x.x.x.conf;
    location / {  
        try_files $uri $uri/ /index.php$is_args$query_string;
      }

其余服务器相同配置相同代码
但是目前反向代理了 10 台服务器,nginx 负载均衡一点也不均衡 经常会出现某一台服务器干爆
而且经过一段时间的观察有某些服务器根本不去负载过去。
各个服务器的接口请求完全正常以排除代码层问题
但是此问题又会出现一整天无法复现的情况,就像人抽风一样无法捕捉。
现在来跪拜各位大佬 有过 nginx 负载均衡的各位前辈来传授晚辈一点经验

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

还有个问题就是 php-fpm 并发请求数并不能超过最大进程数,也就是 upstream 的最大连接数最好不要超过 php-fpm 的最大进程数,如果此时最大连接数进一步超过了 php-fpm 最大能接受的连接的队列长度应该就会建立不了连接了,应该此时就会连接失败 502 吧,其他的还有最大打开连接数量也要注意,超过了也无法建立连接也会 502 吧

4年前 评论
CrazyLickingDog (楼主) 4年前
snower (作者) 4年前
CrazyLickingDog (楼主) 4年前
讨论数量: 5
CrazyLickingDog
upstream 中的服务器全部位ip:9001这种格式

不确定是这个问题,
upstream 中填写两台服务器 a,b 必定会出现 502 问题
将 a 注释留 b ok!
将 b 注释留 a ok!
两台同时存在 502!

人都要疯了 这都啥。。。

4年前 评论

复制均衡只是按统计学平均分配流量,如果你各接口耗时负载不一样,那么完全有可能把某些高负载的请求都分配到同一台机器去啊,但是每台机器的最大分配数量应该不会超过 upstream 的最大连接数啊,设置好最大连接数,别超过最差接口请求下机器最大负载就行了吧,如果接口请求耗时耗负载都一样还超时,大概率是有其他问题

4年前 评论

还有个问题就是 php-fpm 并发请求数并不能超过最大进程数,也就是 upstream 的最大连接数最好不要超过 php-fpm 的最大进程数,如果此时最大连接数进一步超过了 php-fpm 最大能接受的连接的队列长度应该就会建立不了连接了,应该此时就会连接失败 502 吧,其他的还有最大打开连接数量也要注意,超过了也无法建立连接也会 502 吧

4年前 评论
CrazyLickingDog (楼主) 4年前
snower (作者) 4年前
CrazyLickingDog (楼主) 4年前
CrazyLickingDog

我现在对这个 upstream 已经完全不信任了 昨天搞到 1 点多 今天啥事没干又正常工作了

4年前 评论
jfpl 4年前
CrazyLickingDog (作者) (楼主) 4年前

代码有没有特别的操作会影响?可以看看 php 慢日志 感觉是有的请求特别消耗资源

4年前 评论
CrazyLickingDog (楼主) 4年前