首页 > 系统相关 >开发那些事儿:EasyNTS上云网关平台内存泄露是什么原因?如何解决?

开发那些事儿:EasyNTS上云网关平台内存泄露是什么原因?如何解决?

时间:2022-08-26 16:37:27浏览次数:62  
标签:EasyNTS defer 网关 函数 上云 内存

EasyNTS上云网关包含组网运维、多协议视频流拉转推等功能,它可以解决内网设备上云、内网业务上云、直播上云、运维上云等上云需求,通过端口穿透技术,可以将内网的任何网络设备,以IP+端口的形式发布到云端,让处于内网的设备成为一个“云设备”,帮助企业打造“虚拟云主机”。

 

 

有用户反馈,EasyNTS运行pprof一段时间后,内存持续增长。运行30个小时后,从启动时的1.2%飙升到33%,并在2周时间左右系统因内存而崩溃。我们对此情况立刻进行了排查与分析。

1)查看pprof,发现了几个占用内存较大的函数。

 

 

StatisticalFlow函数是用于统计流量输入输出的,每30秒执行一次,其中嵌套了多级for循环。每个循环里面还嵌套了网络请求及defer Body.CLose() 。

defer表示函数结束后执行,for循环表示函数永远不会结束,这就导致每30秒都有一定量的defer压入函数栈帧中,无限增大,无法释放。当函数栈不够用时,又去申请更大的内存空间,将旧的数据拷贝过去,并且一直重复这个过程。

从代码结构上来看也极其糟糕,在for循环里面嵌套了多个for循环,层级就有4级,如下图所示:

 

 

再看另外一个函数,记录设备下线日志,此处每个客户端会创建至少一个协程,并在for循环里每15秒创建一个无法回收的定时器。

 

 

在加载配置中,右侧调用可以看到有非常多的调用,每次调用都要重新加载配置。因为返回的是指针,会逃逸到堆上,直到垃圾回收才清理。

 

 

以上分析结果均是导致用户EasyNTS内存泄露的原因。根据以上分析,可通过以下办法解决内存问题:

1)删除defer,在资源使用完毕后立即关闭;

2)定时器创建在for循环外面;

3)重构函数,每个函数尽量不要超过60行;

4)配置相关使用单例模式。

EasyNTS上云网关可应用在多种场景中,如远程办公、在线课堂、虚拟直播等,当然也可以进行各种上云服务,如果大家还想了解更多相关内容,欢迎持续关注我们的更新,也欢迎大家联系我们探讨更多内容。

标签:EasyNTS,defer,网关,函数,上云,内存
From: https://www.cnblogs.com/TSINGSEE/p/16627939.html

相关文章

  • 智能网关助力零售连锁店经营提质增效
    依托物联网技术促进连锁零售行业的提质增效已经是行业性的趋势,通过全面而细致地采集门店的各种数据信息,诸如连锁门店内的设备能耗、设备状态、商品布局、客户行为、环境感......
  • ESP32-S2上使用SPI接口芯片DM9051NP转以太网的无线物联网网关开发指导
    (98条消息)ESP32-S2上使用SPI接口芯片DM9051NP转以太网的无线物联网网关开发指导_qq1667532的博客-CSDN博客_spi转以太网芯片......
  • Spring Gateway网关配置yml文件
    server:port:9000spring:application:name:gatewaycloud:nacos:discovery:#网关也是微服务的一部分所以也要注册到nacos......
  • 工业网关|基于OneMO DTU实现温湿度等工业数据上传
     前言随着现代通讯技术发展及工业自动化控制系统及设备的效率越来越高,企业对自动化和信息化程度也越来越重视,但是现场控制器的通讯方式和通讯协议的多样化问题越来越突......
  • XSFT-A4流量积算仪与Modbus485网关通讯案例
    本案例控制的是XSFT-A4流量积算仪。系统主PLC选用西门子CPU,通过Modbus485转Profinet网关采XSFT-A4流量积算仪通讯数据。 1、首先创建新项目文件; 2、导入GSD文件。......
  • 如何通过Modbus 485转Profinet网关将变频器数据接入PLC中
    Modbus485转Profinet网关配置方法:打开博图,新建项目并添加GSD文件。 建立Profinet连接,设定Modbus485转Profinet网关的IP地址和设备名称,IP要和Modbus485转Profinet网......
  • linux使用iptable做网关
    首先在能上外网的机器上增加一块网卡我这里两块网卡配置如下[root@muban1~]#cat/etc/sysconfig/network-scripts/ifcfg-eth0 外网卡DEVICE=eth0TYPE=EthernetONB......
  • 边缘计算网关
    边缘计算网关,通过4G/5G通讯和互联网,将工业物联网、边缘计算融为一体,实现云边协同、边端联动、算力下沉等特色,广泛应用于工业物联网、智能交通、电力物联网、环保消防、智慧......
  • 物联网关如何集中管控连锁门店内设备
    随着物联网和信息化的发展,融合了物联网技术的数字化、无人化的新零售门店陆续出现在各个城市。这类新型连锁店铺提供包括无人售货、多样化快捷支付、智能补货上货等多种智......
  • 5G时代,3DCAT助力AR/VR内容上云
    一、5G网络三大应用场景目前中国的5G技术正在加速发展,5G网络拥有增强型移动宽带、超高可靠低时延通信、海量机器类通信三大技术特点和应用场景。其中增强型移动宽带技术特......