美文网首页
性能分析——node内存泄露

性能分析——node内存泄露

作者: 孜锐弟 | 来源:发表于2019-04-26 14:38 被阅读0次

工具:devtool

安装条件:需要在node.js环境下

安装(注意一定需要全局安装):npm install -g devtool

运行:devtool app.js

    最近再研发浦航的生产可视化系统时,快要交付时,部署到客户服务器上后,发现客户服务器上的内存一点一点的增长,看规律是一天增长一两百兆,有时一个星期就挂了,有时后两周都没挂,但是内存有2G多。可是启动的时候才几十兆。

   因为是每隔5分钟会采一次modbus的数据,由于一次轮询只能采一百个寄存器,所以每采一次都要分好几次。全部采完后将数据保存到数据库,并且将缓存中的数据替换成最新采的。总以为是这里的问题,这块捣鼓了好久,加快采集的频率,给node拍的照上也没有发现采的数据暴增的问题,找不到规律,在最终苦恼着。

    后来比较后才发现多了很多数据库的信息,如下图所示:

内存拍照发现数据库信息

    mssql数据库的调用都是前端发过来的请求,所以猜测可能是mssql的问题。于是我关掉数据采集,加快前端动态刷新的频率,并监测内存变化。两个小时,内存从77兆涨到600多兆,如下图所示:

node内存占用

mssql这块处理的最简单,就百多行代码,看看发现从ConnectPool中创建的connection从来内有close过。

close后拍照:

close拍照

    前端页面的刷新的频率跟上面一样,并且加快了modbus的数据采集频率,开启客户端,一个小时后,关掉客户端,内存情况如下:

一个小时后

不关闭客户端内存也在130兆多一点。

    原来connection不close会带来如此巨大的内存泄露。这也验证了为何刚开始测试那周时客户那边的内存就爆了,是因为演示前一周各个部门都需要连这个系统进行测试。很多客户端都连着。这两个星期只有一个客户端连着,这样的连接创建的有限,所以涨的也没有那么快。

相关文章

  • 性能分析——node内存泄露

    工具:devtool 安装条件:需要在node.js环境下 安装(注意一定需要全局安装):npm install ...

  • Android 内存泄露优化处理

    参考:Android应用内存泄露分析、改善经验总结使用新版Android Studio检测内存泄露和性能解决安卓C...

  • android 内存问题处理资源整理

    Android最佳性能实践(二)——分析内存的使用情况 android内存管理建议译文 android内存泄露总结...

  • 内存泄露系列文章(一) - 内存泄露原因及影响

    前言 内存泄露系列文章内存泄露系列文章(一) - 内存泄露原因及影响内存泄露系列文章(二) - 内存泄露监测及分析...

  • 内存泄露系列文章(三) - 内存泄露解决方案

    前言 内存泄露系列文章内存泄露系列文章(一) - 内存泄露原因及影响内存泄露系列文章(二) - 内存泄露监测及分析...

  • 【内存】

    性能优化->虚拟机原理 怎么分析堆内存 内存泄露和内存溢出的原因 怎么做内存管理 JVM类加载机制Java内存区域...

  • 工具:VisualVM

    使用 VisualVM 进行性能分析及调优 概述 开发大型 Java 应用程序的过程中难免遇到内存泄露、性能瓶颈等...

  • valgrind

    valgrind通常用来分析程序性能和内存泄露问题 安装 简介 valgrind包含如下工具 memcheck 检...

  • 内存泄露的分析

    内存泄露的分析 1.静态内存分析 2.动态内存分析概念:

  • Instruments 检测内存泄漏

    目的:检测项目内存泄漏、定位内存泄露代码。 工具:Instruments-->Leaks ⚠️分析内存泄露不能把所...

网友评论

      本文标题:性能分析——node内存泄露

      本文链接:https://www.haomeiwen.com/subject/jbwfnqtx.html