NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

唯快不破——高效定位线上 Node.js 应用内存泄漏

  • 2019-08-24
  • 本文字数:1162 字

    阅读完需:约 4 分钟

唯快不破——高效定位线上Node.js应用内存泄漏

QCon北京2018大会上,黄一君讲师做了《唯快不破——高效定位线上 Node.js 应用内存泄漏》主题演讲,主要内容如下。


演讲简介


线上使用 Node.js 技术作为中间层,进行前后端彻底的分离的方案现在越来越广泛地应用到企业开发中。这也是在容器化微服务架构趋势下“服务端设计的接口究竟是面向 UI 还是只是通用服务?”这个命题中许多企业选择的答案。


而在这种选择下,开发者普遍遇到的问题是:一方面工程师们享受 Node.js 带来的更高自由度的前后端分离方案,更好的渲染性能,更便捷的接口组装和数据处理;另一方面 Node.js 应用对于绝大多数开发者来说却处于一个黑盒状态,导致应用稳定性没有保障。结合为客户排查一些线上故障和之前我自己的编写业务框架和业务开发的工作经历,内存泄漏的问题是使用 Node.js 进行服务端开发时经常遇到的一颗炸弹。


武侠小说里常常写到:天下武功,唯快不破。那么当我们在业务上线后通过一些通用的监控基础设施发现线上的 Node 服务存在内存泄漏时,也肯定是希望能最快地定位并解决问题,以对用户的影响降到最低。所以本次分享将从 Node.js 内嵌的 v8 引擎提供的垃圾回收原理,以及遇到的一些真实且典型的内存泄漏代码案例排查分析总结,来帮助大家应对线上遇到的内存泄漏,更理想的是能帮助大家在开发阶段避免写出内存泄漏的代码。

主要内容

  1. 新生代、老生代的 gc 原理,增量式标记;

  2. Heapsnapshot 是什么,怎么获取,以及 Heapsnapshot 的内容详解;

  3. EventHandle——经常被忽略的泄漏;

  4. 网红 Vue/React——SSR 时记得注意这些;

  5. co 递归、logger 对象实例无限制和 graphql 使用不当引发的典型内存泄漏案例深度分析;

  6. 一些总结。


讲师介绍


黄一君


阿里云 高级开发工程师


毕业于华南理工大学,刚毕业时一度想要从事的是 Java 相关的工作,后面去一个智能家居全套解决方案的团队面 Java,然而入职后通知要使用 JS 语言开发服务端,一度懵了很久。然而逐渐从业务开发——发现/解决应用层问题——深入阅读各种 Node 框架/库源代码——研究底层性能这样一步步的走下来,开始很庆幸自己能在这样一个技术巨变的时间点接触到 Node,能看到 JS 越来越广泛地应用在服务端、跨平台客户端和物联网等方方面面。


生活中我喜欢音乐,爱好高达模型和对应的动漫,热衷于主机/掌机游戏,最近也开始发现自己有研究厨艺的苗头了——周末想吃什么可以自己做确实是一件相当美妙的事情。


来到阿里云后,非常开心能在朴灵老师的团队工作,当年从 Java 转型 Node.js 开发看的第一本书就是朴老师的 《深入浅出 Node.js》。有感于之前应用层框架/业务开发遇到的很多底层问题 ,目前致力于 Node.js 基础设施的开发和诊断线上 Node.js 应用底层故障的工具链的完善,能让天下没有难用的 Node.js,无疑会是一件充满成就感的事情。












完整演讲 PPT 下载链接


https://qcon.infoq.cn/2018/beijing/schedule


2019-08-24 17:134573

评论

发布
暂无评论
发现更多内容

系统性能百倍提升典型案例分析:高性能队列Disruptor,linux服务器架构师

Java 程序员 后端

脉脉上瞬间爆火的Java高级面试题被全网封杀,这套资源到底有什么魅力?

程序员 后端

终于等到了!十位Java架构师整理的“阿里P7,看完老板哭着让我留下来

Java 程序员 后端

网络协议从入门到底层原理(5)传输层,java编程项目实例教程

Java 程序员 后端

网页制作工具之------Dreamweaver界面,springmvc教程下载

Java 程序员 后端

美团二面:聊聊线程池设计与原理,由表及里趣味解析,linux操作系统实用教程课后答案

Java 程序员 后端

聚焦WAVE SUMMIT 2021,大咖齐聚共研深度学习,关于线程池的五种实现方式

Java 程序员 后端

终于彻底搞清楚了 MySQL spin-lock 之一次CPU问题定位过程总结(1)

Java 程序员 后端

终于彻底搞清楚了 MySQL spin-lock 之一次CPU问题定位过程总结

Java 程序员 后端

缓存穿透及解决方案(干货篇),java基础入门第二版第二章答案

Java 程序员 后端

[ CloudWeGo 微服务实践 - 04 ] 尝试操作数据(1)

baiyutang

golang 微服务 10月月更

群晖DS218+做maven私服(nexus3),mysql性能调优

Java 程序员 后端

聊聊MyBatis的历史,mysql原理详解

Java 程序员 后端

聊聊MySQL主从复制的几种复制方式,上岸蚂蚁金服

Java 程序员 后端

绝杀!3位阿里大牛发布这份800页MySQL性能优化法则笔记

Java 程序员 后端

网关性能大PK,Spring Cloud Gateway让人大失所望!,java教程pdf百度云下载

Java 程序员 后端

老生常谈:MySQL高可用,java泛型原理

Java 程序员 后端

网络编程六-网络编程相关面试题汇总,nginx运行原理

Java 程序员 后端

老夫面试两个月真实经历:面试了20家大厂之后,发现这样介绍项目经验

Java 程序员 后端

老面试官问我:LRU 和 Innodb Buffer Pool 有什么关系?

Java 程序员 后端

聊聊多线程(一)线程的基础,linux集群架构师

Java 程序员 后端

聚焦WAVE SUMMIT 2021,大咖齐聚共研深度学习(1),java在大数据技术中的运用

Java 程序员 后端

绝了!你一直想要的数据库界的里程碑,Alibaba技术官内部私藏MySQL笔记

Java 程序员 后端

老板,运维和开发又打起来了!,你连基础的JVM运行时内存布局都忘了

Java 程序员 后端

聊聊RabbitMQ RabbitMQ相关面试题,kafka入门教程步骤

Java 程序员 后端

脑筋急转弯:如何用两个栈实现一个队列?用两个队列实现一个栈(1)

Java 程序员 后端

线上环境大规模RocketMQ集群不停机优雅升级实践,面试字节跳动Java工程师该怎么准备

Java 程序员 后端

网络协议从入门到底层原理(11)网络爬虫,线程池底层实现原理

Java 程序员 后端

老大让我优化数据库,我上来就分库分表,他过来就是一jio

Java 程序员 后端

聊聊多线程(四)线程安全之AtomicInteger类,最全面试考点与面试技巧

Java 程序员 后端

肝完这份Linux网络编程笔记,感觉2年开发白干了,nginx反向代理原理转发过程

Java 程序员 后端

唯快不破——高效定位线上Node.js应用内存泄漏_QCon_黄一君_InfoQ精选文章