网关因设备经常断联抛出异常导致停止

Blade 未结 1 153
BigRoc
BigRoc 2025-08-21 10:21

一、该问题的重现步骤是什么?

1. Node-red-repo 网关猜测因设备经常断连超过次数抛出异常导致程序崩溃,报错搜索是网关未处理相关异常导致

2. 网关正常启动无问题,添加相关正常设备无问题,有的设备会偶尔出现断联1分钟左右的情况,这期间70%的概率导致网关运行停止,日志报错

19 Aug 07:35:06 - [red] Uncaught Exception:

19 Aug 07:35:06 - [error] Error: read ECONNRESET

    at TCP.onStreamRead (node:internal/stream_base_commons:217:20)

报错这个后停止
3. 目前尝试的方法:在settings中加了相关配置如下图重新pnpm run build后更新也会出现上方描述的网关停止情况image.png

image.png

下方是读取节点的情况,Read节点经常掉
image.png二、你期待的结果是什么?实际看到的又是什么?

期待结果:可以帮忙提供这个问题的解决方案,让网关即使因为设备断联也不会导致出现停止运行。

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

正在使用的是boot产品,新版本,在centos7.9的操作系统上,部署方式:本地docker启动redis镜像,将这个build好的网关放在redis容器内部,redis容器中下载了nodejs18版本以上和npm,导出镜像到生产上进行的启动

四、请提供详细的错误堆栈信息,这很重要。

日志中还经常出现这个,我们实际启动的端口是11883,但是这个错误经观察不参与网关停止运行的情况

image.png

五、若有更多详细信息,请在下面提供。

1条回答
  •  admin
    admin (楼主)
    2025-08-21 10:36

     1. 报错的详细日志堆栈提供下

     2. 新开一个可重现的最简化配置,能让随便一个设备连接上后断开导致服务停止就行,然后在设计器右键把配置的json导出发我们邮箱 bladejava@qq.com 

     3. 用nodejs原生部署启动,可以设置nodejs程序异常关闭后重新自启动

     4. 测试官方原版:https://github.com/node-red/node-red ,看看原版在同样场景是不是也会停止服务。(原版没有对接mysql,我们仅对mysql配置入库做了二开,其他逻辑不变)

     5. 以上方式都测一遍后请提供给我们结果


    node-red 原生部署可以参考下面的步骤,脚本都已提供好

    CleanShot20250821103557@2x.png

    作者追问:2025-08-21 10:36

    1、本身部署属于源码部署方式部署
    2、一下就是异常的详细信息,大概半个小时断一次,

    22 Aug 05:53:16 - [error] [s7 endpoint:3a88cd4d477028b3] Error: Request timeout

    [CRASH  PROTECTION] Uncaught Exception: Error: read ECONNRESET

        at TCP.onStreamRead (node:internal/stream_base_commons:217:20) {

      errno: -104,

      code: 'ECONNRESET',

      syscall: 'read'

    }

    22 Aug 05:53:21 - [red] Uncaught Exception:

    22 Aug 05:53:21 - [error] Error: read ECONNRESET

        at TCP.onStreamRead (node:internal/stream_base_commons:217:20)

    flows(原json文件).txt

    3、上方是这个结点的json
    4、我下载了官方的源码包但是启动没对mysql等进行配置无法启动就没后续进行
    5、无nginx相关配置,是由bladex的边缘计算网关那里进行跳转进去

    回答: 2025-08-21 10:36

    你上面不是写的docker部署么?

    官方原版你需要启动才能验证这个问题到底是原版的问题还是我们二开后的问题。

    如果是原生部署,nodejs可以配置服务停止后自启动的,你都尝试下。

    0 讨论(0)
提交回复