Nginx-报错no live upstreams while connecting to upstream
1、问题描述
生产环境Nginx间歇性502的事故分析过程
客户端请求后端服务时一直报错 502 bad gateway,查看后端的服务是正常启动的。后来又查看Nginx的错误日志,发现请求后端接口时Nginx报错no live upstreams while connecting to upstream,查看该错误的解释可以得到的结果是upstream中没有可以提供服务的server,即Nginx已经发现不了存活的后端了,但是,我直接访问后端的server却是可以使用的,证明server端可用。
最后查找文档,发现问题出现在业务上要求保持会话,但是Nginx到后端并没有保持会话,那么,Nginx当然就找不到后端可用服务,就会报no live upstream。
参考文档:https://xiezefan.me/2017/09/27/nginx-502-bug-trace/
2、服务架构如下:
+--------+ HTTP +-------+ HTTP +-------+
| Client | ------> | | ------> | API A |
+--------+ | | +-------+| | HTTP +-------+| | ------> | API B || | +-------+| | HTTP +-------+| Nginx | ------> | API C || | HTTP +-------+| | ------> | API D || | HTTP +-------+| | ------> | API E || | HTTP +-------+| | ------> | API F |+-------+ +-------+
3、排查思路
一般讲,Nginx 502就是后端处理不过来,但查看监控后端几个API的负载均很低,当前请求的QPS远远低于服务的上限。而且同一瞬间,多套独立部署的API均处理不过来的概率也比较低。
我们简单做了个对比测试,分别对域名(请求走Nginx)与直接通过IP对内网一个API通过进行小规模压测。
对比测试发现,直接通过域名走Nginx对API进行压测的话,QPS远远小于预期,并且存在大量失败请求。基本断定问题出在Nginx —> API 这条链路上。同时排除了后端服务响应不过来的可能性。网络问题可能性大一点。
一开始我们怀疑云服务商对内网带宽做了限制,我们观察内网带宽达到在200MB/S后就上不去了,所以我们在Nginx机器上ping后端服务,观察一段时间发现有小量抖动,但基本延迟正常。那云服务商对网络做限制的可能性就变小了很多。
我们观察Nginx错误日志:
2023/08/26 14:23:00 [error] 5950#5950: *5172133211 no live upstreams while connecting to upstream, client: xxx.xxx.xxx.xxx, server: api.xx.xxxxxxx.cn, request: "POST /xx/xxxxxx/bidder HTTP/1.1", upstream: "http://xxxxxxxxxx/bidder", host: "api.xx.xxxxxxx.cn"
这里出现no live upstreams while connecting to upstream, 也就说一瞬间Nginx检测不到任何存活的后端服务,而网络又没有大波动,那就可能是TCP链接出问题。打开Zabbix监控发现TCP连接数的确发生剧烈的波动现象。
异常TCP连接数趋势

这时候问题很明显,Nginx->API这一链路存在大量的TCP链接被回收的情况,我们马上在API机器上查看链接状态
shell > netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
SYN_RECV 1
ESTABLISHED 656
FIN_WAIT1 4
TIME_WAIT 153429
TIME_WAIT特别的多,大量的连接被API侧主动关闭了。这说明Nginx->API这一步请求并没有Keep-Alive,我们检查Nginx,确定是配置了Keep-Alive
4、解决办法
修改nginx的配置
location ^~ /xxxxxx/ {...proxy_http_version 1.1;proxy_set_header Connection ""; //规制强制指定使用1.1协议...
}
相关文章:
Nginx-报错no live upstreams while connecting to upstream
1、问题描述 生产环境Nginx间歇性502的事故分析过程 客户端请求后端服务时一直报错 502 bad gateway,查看后端的服务是正常启动的。后来又查看Nginx的错误日志,发现请求后端接口时Nginx报错no live upstreams while connecting to upstream,…...
五种 CSS 位置类型以实现更好的布局
在 Web 开发中,CSS(层叠样式表)用于设置网站样式的设置。为了控制网页上元素的布局,使用CSS的position属性。因此,在今天这篇文章中,我们将了解 CSS 位置及其类型。 CSS 位置属性用于控制网页上元素的位置…...
【真题解析】系统集成项目管理工程师 2022 年下半年真题卷(综合知识)
本文为系统集成项目管理工程师考试(软考) 2022 年下半年真题(全国卷),包含答案与详细解析。考试共分为两科,成绩均 ≥45 即可通过考试: 综合知识(选择题 75 道,75分)案例分析&#x…...
视频中的声音怎么提取出来?这样做提取出来很简单
提取视频中的声音可以有多种用途。例如,我们可能希望从视频中提取音乐或音效,以在其他项目中使用。或者,可能需要将视频中的对话转录为文本,以便更轻松地编辑和共享内容。无论目的是什么,提取视频中的声音都可以帮助我…...
【Qt学习】05:自定义封装界面类
OVERVIEW 自定义封装界面类1.QListWidget2.QTreeWidget3.QTableWidget4.StackedWidget5.Others6.自定义封装界面类-显示效果(1)添加设计师界面类(2)在ui中设计自定义界面(3)在需要使用的界面中添加…...
网络服务第二次作业
[rootlocalhost ~]# vim /etc/httpd/conf.d/vhosts.conf <Virtualhost 192.168.101.200:80> #虚拟主机IP及端口 DocumentRoot /www/openlab #网页文件存放目录 ServerName www.openlab.com #服务器域名 </VirtualHost> …...
【记录】USSOCOM Urban3D 数据集读取与处理
Urban3D数据集内容简介 Urban3D数据集图像为正摄RGB影像,分辨率为50cm。 从SpaceNet上使用aws下载数据,文件夹结构为: |- 01-Provisional_Train|- GT|- GT中包含GTC,GTI,GTL.tif文件,GTL为ground truth b…...
flutter ios webview不能打开http地址
参考 1、iOS添加信任 webview_flutter 在使用过程中会iOS出现无法加载HTTP请求的情况, 但是Flutter 却可以加载HTTP请求。这就与两个的框架有关了,Flutter是独立于UIKit框架的。 解决方案就是在iOS 的info.plist中添加对HTTP的信任。 <key>NSApp…...
【SpringBoot】详细介绍SpringBoot中Entity类中的getters和setters
在Spring Boot中的Entity类中,getters和setters是用来获取和设置对象属性值的方法。它们是Java Bean规范的一部分,并且通常被用于向开发人员和框架公开类的属性。 在Entity类中,getters和setters方法通常通过property来实现,即将…...
阿里云服务器搭建FRP实现内网穿透-P2P
前言 在了解frp - p2p之前,请先了解阿里云服务器搭建FRP实现内网穿透-转发: 文章地址 1、什么是frp - p2p frp(Fast Reverse Proxy)是一个开源的反向代理工具,它提供了多种功能,包括端口映射、流量转发和内网穿透等。…...
Vue3 Element-plus Upload 上传图片
技术栈:Vue3 Ts Element-plus 官网地址:Upload 上传 | Element Plus 一、背景: 表单上传图片功能 二、效果: 三、流程: ①点击上传图片按钮,系统弹出文件选择对话框,选择图片并确认 ②调…...
PCL | Ubuntu18安装CloudCompare
文章目录 操作教程 操作教程 CloudCompare下载官网:https://www.danielgm.net/cc/release/ 安装flatpak插件 sudo apt install flatpak添加库路径 flatpak remote-add flathub https://flathub.org/repo/flathub.flatpakrepo安装CC flatpak install flathub or…...
【LeetCode-中等题】138. 复制带随机指针的链表
文章目录 题目解题核心思路:找random指针指向思路一:哈希思路二:迭代构造新链表 方法一:哈希递归方法二:纯哈希方法三:迭代 节点拆分 题目 解题核心思路:找random指针指向 这里的拷贝属于深拷…...
C++--动态规划背包问题(1)
1. 【模板】01背包_牛客题霸_牛客网 你有一个背包,最多能容纳的体积是V。 现在有n个物品,第i个物品的体积为vivi ,价值为wiwi。 (1)求这个背包至多能装多大价值的物品? (2)若背包恰好装满&a…...
【Android-Flutter】我的Flutter开发之旅
目录: 0、文档:1、在Windows上搭建Flutter开发环境(1)[使用中国镜像(❌详细看官方文档)](https://docs.flutter.dev/community/china)(2)[下载最新版Flutter SDK(已包含Dart)](https://docs.flu…...
【Linux】深入理解文件操作
文章目录 初次谈论文件重温C语言文件操作系统文件操作接口openwriteread 再次谈论文件文件描述符文件描述符的分配规则 重定向什么是重定向重定向的本质系统调用接口实现重定向<、>、>> 初次谈论文件 开始之前先谈论一下关于文件的一些共识性问题。 一个文件可以…...
异地使用PLSQL远程连接访问Oracle数据库【内网穿透】
文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…...
【方案】基于AI边缘计算的智慧工地解决方案
一、方案背景 在工程项目管理中,工程施工现场涉及面广,多种元素交叉,状况较为复杂,如人员出入、机械运行、物料运输等。特别是传统的现场管理模式依赖于管理人员的现场巡查。当发现安全风险时,需要提前报告࿰…...
华为各型号交换机开启SNMP v3
设备型号:华为S5720S-28P-LI-AC 设备软件版本:V200R011C10SPC600 调试命令: snmp-agent snmp-agent sys-info version v3 snmp-agent group v3 GroupName privacy //{GroupName}是设置一个SNMP的组名,我设置是SNMPGroup snm…...
CocosCreator3.8研究笔记(一)windows环境安装配置
一、安装Cocos 编辑器 (1)、下载Cocos Dashboard安装文件 Cocos 官方网站Cocos Dashboard下载地址 : https://www.cocos.com/creator-download9下载完成后会得到CocosDashboard-v2.0.1-win-082215.exe 安装文件,双击安装即可。 …...
stm32开发者如何快速接入大模型api实现智能对话功能
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 STM32开发者如何快速接入大模型API实现智能对话功能 为嵌入式设备增加自然语言交互能力,是许多STM32开发者希望实现的功…...
评估智能体性能:成功率、延迟与成本
一个从“拍脑袋优化”到“数据驱动调优”的真实转型故事 ——顺便聊聊我这三年烧掉的API费用和熬过的夜 去年夏天,我们团队做了一个电商智能客服Agent。上线第一周,各项指标看起来都挺正常:用户满意度4.7分,平均响应时间不到2秒。…...
收藏!小白程序员必看:大模型AI入门学习指南,带你玩转制造业全流程
收藏!小白程序员必看:大模型AI入门学习指南,带你玩转制造业全流程 本文深入探讨了AI技术在制造业全流程中的应用及其重要意义。文章从研发设计、生产制造、运营管理和产品服务等环节入手,详细阐述了AI技术如何通过优化流程、提高效…...
颠覆性英雄联盟智能助手:如何用League Akari告别繁琐操作,专注游戏核心
颠覆性英雄联盟智能助手:如何用League Akari告别繁琐操作,专注游戏核心 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit …...
如何利用Stretchly健康办公助手科学管理屏幕时间:免费开源的健康办公助手完整解决方案
如何利用Stretchly健康办公助手科学管理屏幕时间:免费开源的健康办公助手完整解决方案 【免费下载链接】stretchly The break time reminder app 项目地址: https://gitcode.com/gh_mirrors/st/stretchly 你是否经常在电脑前连续工作数小时后感到眼睛干涩、颈…...
Trigger.dev与GitOps集成:自动化工作流任务调度的终极指南
Trigger.dev与GitOps集成:自动化工作流任务调度的终极指南 【免费下载链接】trigger.dev Trigger.dev – build and deploy fully‑managed AI agents and workflows 项目地址: https://gitcode.com/gh_mirrors/tr/trigger.dev 在当今快速发展的软件开发环境…...
终极Anno 1800模组加载器:5分钟轻松定制你的游戏体验
终极Anno 1800模组加载器:5分钟轻松定制你的游戏体验 【免费下载链接】anno1800-mod-loader The one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML merging and Python mods. 项目地址: https://gitcode.com/gh_mirrors/an/a…...
2026年城市精准获客方案三大推荐榜单,解锁高效引流新范式
本文围绕城市精准获客方案展开系统性梳理,聚焦本地化数据挖掘、智能引流技术及营销效能优化三大核心方向。通过对主流技术方案的能力解析与适用场景拆解,为不同规模企业提供精准获客策略参考。全文基于行业通用标准与实测数据,客观呈现方案实…...
PyTorch进阶教程:从模型部署到工程化实战全解析
1. 项目概述与核心价值最近在深度学习社区里,一个名为“TingsongYu/PyTorch-Tutorial-2nd”的项目引起了我的注意。作为一名在算法工程领域摸爬滚打了多年的从业者,我深知对于初学者和希望系统进阶的开发者来说,一份结构清晰、内容扎实、且能…...
开源云原生安全态势感知平台:架构设计与实战部署指南
1. 项目概述:一个开源的云原生安全态势感知平台最近在梳理团队内部的安全监控体系时,发现了一个挺有意思的开源项目——piti/openclaw-security-dashboard。这名字直译过来是“皮提的开放之爪安全仪表盘”,听起来有点中二,但实际接…...
