Nginx upstream 负载均衡配置

news2024/10/7 16:17:44

[toc]
## 问题:

自7/4 以来, 所有设备同时出现 Network Error, 导致业务无法正常进行, 频率 3次/每分钟;

## 现场情况及原因分析:
3楼: 8条产线
4楼: 20条产线
5楼: 5条产线
点数: 33条线 * 平均 (5台工位 + 1台电视看板 + 3台测试仪 + ) ≈ 300

- Nginx 日志占用: access 日志 100G 单个文件, error 日志 单个文件 76MB

- 设备资源占用正常

### 问题原因
通过查看Nginx 错误日志, 发现大量报错 no live upstreams while connecting to upstream

2023/07/06 11:28:43 [error] 42652#57660: *4922556 no live upstreams while connecting to upstream, client: xx, server: localhost, request: "OPTIONS /api/Axx HTTP/1.1", upstream: "http://myapp/api/xx", host: "xx", referrer: "xx"


upstream中没有可以提供服务的server ,即nginx已经发现不了存活的后端了,但是,我直接访问后端的server确是可以使用的,证明server端可用.
最后查找文档,发现问题出现在业务上要求保持会话,但是nginx到后端并没有保持会话,那么,nginx找不到后端可用服务,就会报no live upstream
参考文档:
https://nginx.org/en/docs/http/ngx_http_upstream_module.html


## 临时方法及验证

12:20 修改 max_fails=3 fail_timeout=60s
13:30 卡顿持续(每分钟3次左右, 报错网络错误)
14:13 修改  keepalive 配置
14:42  卡顿一次 (表现不同, 等待响应)
15:09  卡顿一次 (表现不同, 等待响应)
16:00  卡顿一次 (表现不同, 等待响应 )

## 根本原因分析

后端服务响应时间过长导致Nginx 自动剔除节点, 最终所有节点不可用直接拒绝连接;


## 改善建议
1. 修改Nginx 配置:
1.1 增加   keepalive 配置, 这个值并没有一个固定的值, 需要综合结合资源、服务使用情况来具体配置, 一般为节点数的2倍;
1.2 调整 access 日志级别;
1.3 日志增加归档功能;
2. 优化报工相关接口;
3. 看板服务分离;
4. 数据库数据归档;


## 扩展内容

upstream 参数

| #  | 参数名  |     作用                          |
| -- | -- | ------------ |
| 1  | server  | 配置 server 节点下的 location 节点中的 proxy_pass 反向代理  |
| 2 |  weight | 指定轮询几率(weight),weight 和访问比率成正比,用于后端服务器性能不均的情况  |
| 3  | ip_hash  | 每一个请求按訪问ip的hash结果分配(ip_hash)。这样每一个訪客固定訪问一个后端服务器,能够解决 session 的问题  |
| 4  | fair  |  按后端服务器的响应时间来分配请求(fair)。响应时间短的优先分配。与weight分配策略相似。 |
| 5  |   keepalive      |    长连接缓存池大小为32 |
| 6  |   keepalive_requests 2000 | 每条长连接最大复用请求数为2000  |
| 7 |  keepalive_time  |   |
| 8 |  keepalive_timeout  |   |

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/750891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL备份与还原、索引、视图】练习

一、备份与还原 /***************************样例表***************************/CREATE DATABASE booksDB;use booksDB;CREATE TABLE books(bk_id INT NOT NULL PRIMARY KEY,bk_title VARCHAR(50) NOT NULL,copyright YEAR NOT NULL);INSERT INTO booksVALUES (11078, Lear…

UNIX网络编程卷一 学习笔记 第二十三章 高级SCTP套接字编程

SCTP是一个面向消息的协议,递送给用户的是部分的或完整的消息。只有当发送大消息时,在对端才会递送部分的消息。部分消息被递送给应用后,多个部分消息组合成单个完整消息不由SCTP负责。在SCTP应用进程看来,一个消息既可由单个输入…

线性代数的一些小细节

1 .矩阵的满足结合律,但不满足交换律 验证和证明如下图: 如下,UWQ三个矩阵的2种结合,证明矩阵乘法满足结合律 下图中,AB 和BA的值可能是不同的(相同的条件是图中相互对应的4项相同,即对称矩阵…

防范 XSS 攻击的措施

防范 XSS 攻击的措施 XSS(Cross-site scripting)攻击是一种常见的网络安全漏洞,它可以通过注入恶意代码来攻击用户的计算机和浏览器,从而窃取用户的敏感信息或执行恶意操作。本篇文章将介绍防范 XSS 攻击的措施,并提供…

Spring设计模式及部分技术讲解

讲师:邓澎波 Spring面试专题 1.Spring应该很熟悉吧?来介绍下你的Spring的理解 有些同学可能会抢答,不熟悉!!! 好了,不开玩笑,面对这个问题我们应该怎么来回答呢?我们给大家梳理这个几个维度来回答 1.1 Spring的发展历程 先介绍Spring是怎么来的,发展中有哪些核心的节…

Linux文件

目录 系统级I/O 简介 接口 文件描述符fd 重定向 缓冲区 文件系统 软硬链接 动静态库 静态函数库 动态库 系统级I/O 简介 输入/输出(I/O)是在主存和外部设备(磁盘驱动器、终端和网络)之间复制数据的过程。输入操作是…

opencv-04 像素处理

opencv-04 像素处理 在 OpenCV 中,最小的数据类型是无符号的 8 位数。因此,在 OpenCV 中,实际上并没有二值图像这种数据类型,二值图像经常是通过处理得到的,然后使用0表示黑色,使用 255 表示白色。 可以将…

【基本算法】三分法模板

洛谷三分法https://www.luogu.com.cn/problem/P3382 题目描述 如题,给出一个 N 次函数,保证在范围 [l,r] 内存在一点 x,使得 [l,x] 上单调增,[x,r] 上单调减。试求出 x 的值。 输入格式 第一行一次包含一个正整数 N 和两个实数…

吐血整理,Jmeter分布式性能压测-常见问题+解决(详细整理)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 安装常见问题 问题…

使用npm和nrm查看源和切换镜像

一、使用npm查看当前源、切换淘宝镜像、切换官方源 (1)npm查看当前源: npm get registry (2)npm设置淘宝镜像源: npm config set registry http://registry.npm.taobao.org (3)n…

注册中心技术Eureka、Nacos

说明:在微服务框架中,各个服务之间都是独立的。理论上来说,各个服务之间是可以直接通信的,但实际上因为服务之间通信需要管理和规划,如请求怎么负载均衡、请求怎么降级处理等等,所以就需要使用一个技术&…

企业绿色发展关键环节:产品碳足迹管理

近年来,产品生产消费对环境造成的影响越来越受到重视。“产品碳足迹”作为衡量产品对环境影响的重要指标,已成为企业在产品生命周期管理中不可忽视的元素。“产品碳足迹”(Product Carbon Footprint, PCF)是指产品在生产、制造、运…

【剧前爆米花--前端三剑客】JavaScript(WebAPI)中的相关方法和实例

作者:困了电视剧 专栏:《JavaEE初阶》 文章分布:这是一篇关于JavaScript(WebAPI)的文章,在这篇文章中我会简单介绍一些常用的js方法,并给出他们的应用实例,希望对你有所帮助&#xf…

代码随想录day2 | 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II

文章目录 一、977.有序数组的平方二、209.长度最小的子数组三、59.螺旋矩阵II 一、977.有序数组的平方 977.有序数组的平方 暴力法&#xff1a;O(NlogN) 先所有数字平方&#xff0c;然后再快排&#xff0c;时间复杂度取决于快排 class Solution { public:vector<int> s…

Openlayers实战:加载天地图

国家地理信息公共服务平台“天地图”(以下简称“天地图“)是国家基础地理信息中心建设的网络化地理信息共享与服务门户。 其属于国家队的,有一定的权威性。 在Openlayers中如何加载天地图呢,方法很简单,用XYZ的形式。 它分为底图和标注,可以灵活的做配合使用。 效果图 源…

java学习路程之篇三、知识点、类、模块、项目、操作、下载、安装、IDEA

文章目录 1、IDEA开发工具2、IDEA的下载和安装3、IDEA中的第一个代码4、IDEAZ中的类、模块、项目的操作 1、IDEA开发工具 2、IDEA的下载和安装 3、IDEA中的第一个代码 4、IDEAZ中的类、模块、项目的操作

PX4实战 各种问题的参数调整解决方案

桨叶旋转频率引起的噪声 比较好的震动 不好的震动 一般好的振动特性时&#xff0c;三轴加速度的原始数据值都会在很小的范围内波动&#xff0c;在3范围内就是非常好的振动环境了。 分析飞行器的幅频特性&#xff0c;一方面除了查看飞行器的振动特性好坏&#xff0c;另一方面…

技术架构的演进-八大架构

目录&#xff1a; 常见概念评价指标单机架构应用数据分离架构应用服务集群架构读写分离 / 主从分离架构引入缓存 —— 冷热分离架构垂直分库业务拆分 —— 微服务容器化引入——容器编排架构总结 1.常见概念&#xff1a; 应用&#xff08;Application&#xff09; / 系统&am…

安卓日志~

文章目录 bugreport获取报告设备模拟器adb命令用户 报告目录 阅读错误报告logcat定义日志记录抓取日志过滤优先级输出格式格式修饰符日志缓冲区 ANR触发ANR避免ANR工作线程 ANR日志定位无响应应用查看堆栈跟踪 死锁 activity内存内存不足内存快照 广播显示器争用后台编译叙述电…

linux终端前面显示base和不显示base

问题描述&#xff1a;前提是系统里装了anaconda3&#xff0c;有时候两个服务器之间相连长时间没使用或者访问时候前面没显示base。。 解决&#xff1a;我们在做深度学习时需要一个环境&#xff0c;如果前面没显示base的话&#xff0c;你直接conda activate是激活不了我们需要跑…