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负载均衡的各位前辈来传授晚辈一点经验

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

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

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

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

人都要疯了 这都啥。。。

3年前 评论

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

3年前 评论

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

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

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

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

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

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

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!