socketio连接失败,nginx返回502 connect() failed (111: Connection refused)

news2024/9/28 11:20:27

现象

  • 我们信控平台,需要实时展示信号灯灯态(红黄绿、倒计时等)

  • 当灯态变化时,前端信号机设备会通过socket协议将消息推送给我们的通信服务,通信服务将消息解析处理后,关联路口信息,再把信息通过socket广播推送给浏览器

  • 当用户访问平台时,打开首页,就一直会接收到灯态推送,再在界面上实时渲染,可以实时查看灯态

  • 平台更新部署后,发现界面上的倒计时没有了,查看了下数据,发现数据库里的数据是对的

  • F12打开开发者模式,筛选“socket.io”,发现消息接收502了(很难复现,没有当时的截图,截了个正常的)
    在这里插入图片描述

  • 查看nginx日志,发现报错如下(部分):

"GET /socket.io/ HTTP/1.1" 502 559 [error] 24#24: *1 connect() failed (111: Connection refused) while connecting to upstream
2023/06/26 13:50:12 [error] 24#24: *1839 connect() failed (111: Connection refused) while connecting to upstream, client: 172.16.1.96, server: 172.16.1.100, request: "GET /socket.io/?EIO=3&transport=polling&t=OZsGAi0 HTTP/1.1", upstream: "http://172.18.0.12:7754/socket.io/?EIO=3&transport=polling&t=OZsGAi0", host: "172.16.1.100", referrer: "http://172.16.1.100/main/live-view/map"

解决

  • 我们的nginx是使用docker部署的,docker-compose里配置如下:
  # nginx服务,静态文件访问和反向代理
  nginx:
    image: nginx:1.20.2
    container_name: nginx
    ports:
      - 80:80 #信控前端
    depends_on:
      - gateway-app
      - data-center-app
    volumes:
      - ./volumes/nginx-html:/usr/share/nginx/html
      - ./volumes/nginx-config:/etc/nginx/conf.d
      - /etc/localtime:/etc/localtime
    environment:
      - TZ=Asia/Shanghai
    restart: always
  • 百度了一堆,没发现问题
  • 这个错误通常是因为Nginx无法连接到后端的upstream服务。可能的原因包括:
  1. upstream服务挂掉了或未启动
  2. 防火墙阻止了Nginx连接upstream服务
  3. upstream服务的IP地址或端口号配置错误
  4. upstream服务只监听了本地地址(如127.0.0.1),而Nginx尝试连接外部地址
  • 解决方法也主要是针对以上排查,主要排查了下网络,没发现问题
  1. 确认upstream服务是否正常运行,尝试手动连接upstream服务;
  2. 检查防火墙设置,确保允许Nginx连接upstream服务;
  3. 检查Nginx配置文件中upstream服务的IP地址或端口号是否正确;
  4. 如果upstream服务只监听了本地地址,需要使用IP转发或者配置upstream服务监听所有地址。
  • 试着把nginx 重启了一下,发现重启后恢复正常了
  • 这个是偶发现象,部署更新平台时偶尔会出现,但不是必现,很难重现。后续也观察了下,没有重启部署操作时,一直没出过此问题
  • 我发现偶尔出现的时候,是因为应该服务重新部署了,nginx没有重启,但是也有一起使用docker-compose up重启的,怀疑和启动顺序有关系
  • 后续改进了部署更新的脚本,部署其他服务结束时,重启一下nginx。然后部署完成后,再检查一下平台信号机状态是否已经上报,没有则重启一下服务器
  • 正常推送,日志如下:
172.16.1.96 - - [26/Jun/2023:13:51:33 +0800] "GET /socket.io/?EIO=3&transport=polling&t=OZsGUNW&sid=a8726ad4-a4f8-420f-8ffe-e27ff82c6a69 HTTP/1.1" 200 42 "http://172.16.1.100/main/live-view/map" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" "-"

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

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

相关文章

数据库监控与调优【四】—— EXPLAIN详解

EXPLAIN详解(使用、可视化、扩展与性能计算公式) TIPS 本文基于MySQL 8.0编写,理论支持MySQL 5.0及更高版本。 什么是EXPLAIN命令 EXPLAIN命令是查看MySQL查询优化器如何执行查询的主要方法,可以很好地分析SQL语句的执行情况。每…

MPLS新手排查丢包问题

借助查问题又重新复习了一下mpls协议,首先复习一下它的报文格式: 0---------------19-------22---23------------31 | Label value | Exp | Bos | TTL | -----------------|---------|-------|-------------| 字段意义: Label v…

全网最新超详细的【Axure】Axure RP 10的下载、安装、中文字体、授权【2023年】

文章目录 1. 文章引言2. 下载Axure103. 安装Axure104. Axure10中文5. 解决axure弹框更新的问题6. 重要备注7. Axure10授权 1. 文章引言 最近在学习原型图,针对画原型图的工具,反复对比墨刀、Axure、xiaopiu后,最终选择了Axure。 接下来&…

ansible自动化IT工具安装部署与使用验证

目录 一、环境配置 1、关闭防火墙 2、免密登录配置 3、同步时区 二、服务端配置 1、安装软件 2、查看版本 3、实现远程控制huyang3 4、测试 结果验证: 一、环境配置 1、关闭防火墙 systemctl stop firewalld iptables -F setenforce0 2、免密登录配置 【huy…

二叉树题目:二叉树展开为链表

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 后记 题目 标题和出处 标题:二叉树展开为链表 出处:114. 二叉树展开为链表 难度 3 级 …

8 从0开始学PyTorch | PyTorch中自动计算梯度、使用优化器

上一节,我们写了很多代码,但是不知道你有没有注意,那些代码看起来跟PyTorch关系并不是很大啊,貌似很多都是Python原生代码? 如果你是这样的感觉,那我要告诉你,你感觉的没有错。前面主要在于机制…

下面告诉你音频转换工具有哪些

今天我想和大家聊一聊音频转换工具。你是不是有时候想把一首酷炫的歌曲转换成你喜欢的音频格式,或者想把录音文件转成可编辑的格式?别担心,这里有一些超赞的音频转换工具,可以帮你解决这些问题!无论是从MP3到WAV&#…

武汉大学计算机考研分析

关注我们的微信公众号 姚哥计算机考研 更多详情欢迎咨询 武汉大学(A-)考研难度(☆☆☆☆☆) 武汉大学计算机考研招生学院是计算机学院、国家网络安全学院和测绘遥感信息工程国家重点实验室。目前均已出拟录取名单。 武汉大学计…

Redis的3大特殊数据类型(1)-BitMap

BitMap(位图/位数组)是Redis2.2.0版本中引入的一种新数据类型,该数据类型本质是一个仅含0和1的二进制字符串。因此可以把 Bitmap 想象成一个以位为单位的数组,数组的每个单元只能存储 0 和 1,数组的下标在 Bitmap 中叫做偏移量 offset&#x…

volatile关键字和ThreadLocal

作用: 1.线程的可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。 2. 顺序一致性:禁止指令重排序。 线程之间的共享变量存储在主内存中(Main Memory)中,每个线程都一个都…

StarRocks Friends 上海站活动回顾(含 PPT 下载链接)

6月17日, StarRocks & Friends 上海站活动如期而至,近百位社区小伙伴参与交流活动;针对 StarRocks 存算分离、StarRocks 在业界的应用实践、以及 StarRocks 与 BI 结合、湖仓一体规划等话题展开激烈的交流互动。 本文总结了技术交流活动…

未来的彩电,彩电的未来

疫情后的首个线上大促已经结束,“史上投入最大618”也没能抵住彩电市场整体的需求疲软。 根据奥维云网线上推总数据,2023年618期间,中国彩电线上市场零售量规模为249.9万台,同比下降12.9%;零售额规模为79.7亿元&#…

配电柜(箱)使用防雷浪涌保护器的作用和方案

配电箱是电力系统中的重要组成部分,负责将电力从供电系统输送到各个电器设备。然而,由于天气状况和其他因素的影响,电力系统可能会受到雷击引起的浪涌电压的威胁。为了保护配电箱和其中的设备免受浪涌电压的破坏,我们需要在配电箱…

Redis中3大特殊数据结构(2)-HyperLogLog

HyperLogLog算法是法国人Philippe Flajolet 教授发明的一种基数计数概率算法,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。HyperLogLog 适用于大数据量的去重统计,HyperLogLog 提供不精确的去重计数方案…

基于Java+Swing实现餐厅点餐系统

基于JavaSwing实现餐厅点餐系统 一、系统介绍二、系统展示1.主页2.点菜3.下单4.结算5.销售情况(管理员) 三、系统实现四、其他系统五、获取源码 一、系统介绍 该系统针对两个方面的用户,一个是用餐客户,另一个是餐厅管理员。将功…

iOS 17 beta 2有哪些BUG?iOS 17 beta 2推荐升级吗?

虽然iOS 17 beta 2 带来了大量的功能更新,但毕竟是测试版,海量的适配BUG也一同随之而来。 想升级iOS 17 beta 2的用户不妨先查看下目前存在的问题汇总! 一:存储空间更小了 升级beta1后存储空间缩小了大概3G左右,bet…

k8s网络通信

详解Kubernetes网络模型 Kubernetes 是为运行分布式集群而建立的,分布式系统的本质使得网络成为 Kubernetes 的核心和必要组成部分,了解 Kubernetes 网络模型可以使你能够正确运行、监控和排查应用程序故障。 网络所涉及的内容很多,拥有许多…

人人都能生成火爆全网的最不像二维码的二维码!

Sealos 公众号已接入了 GPT-4,完全免费!欢迎前来调戏👇 最近有人展示了使用 Stable Diffusion 创建的艺术二维码。这些二维码是使用定制训练的 ControlNet模型生成的。 但是操作门槛有点高。 你需要 GPU,还需要学习如何使用 Stabl…

diffusion model(二)—— DDIM技术小结

论文地址:Denoising Diffusion Implicit Models github地址:https://github.com/ermongroup/ddim 背景 去噪扩散概率模型 (DDPM1) 在没有对抗训练的情况下实现了高质量的图像生成,但其采样过程依赖马尔可夫假设,需要较多的时间…

SoapUI实践:自动化测试、压力测试、持续集成

因为项目的原因,前段时间研究并使用了 SoapUI 测试工具进行自测开发的 api。下面将研究的成果展示给大家,希望对需要的人有所帮助。 如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试…