
在QCon北京2018大会上,黄一君讲师做了《唯快不破——高效定位线上 Node.js 应用内存泄漏》主题演讲,主要内容如下。
演讲简介:
线上使用 Node.js 技术作为中间层,进行前后端彻底的分离的方案现在越来越广泛地应用到企业开发中。这也是在容器化微服务架构趋势下“服务端设计的接口究竟是面向 UI 还是只是通用服务?”这个命题中许多企业选择的答案。
而在这种选择下,开发者普遍遇到的问题是:一方面工程师们享受 Node.js 带来的更高自由度的前后端分离方案,更好的渲染性能,更便捷的接口组装和数据处理;另一方面 Node.js 应用对于绝大多数开发者来说却处于一个黑盒状态,导致应用稳定性没有保障。结合为客户排查一些线上故障和之前我自己的编写业务框架和业务开发的工作经历,内存泄漏的问题是使用 Node.js 进行服务端开发时经常遇到的一颗炸弹。
武侠小说里常常写到:天下武功,唯快不破。那么当我们在业务上线后通过一些通用的监控基础设施发现线上的 Node 服务存在内存泄漏时,也肯定是希望能最快地定位并解决问题,以对用户的影响降到最低。所以本次分享将从 Node.js 内嵌的 v8 引擎提供的垃圾回收原理,以及遇到的一些真实且典型的内存泄漏代码案例排查分析总结,来帮助大家应对线上遇到的内存泄漏,更理想的是能帮助大家在开发阶段避免写出内存泄漏的代码。
主要内容
新生代、老生代的 gc 原理,增量式标记;
Heapsnapshot 是什么,怎么获取,以及 Heapsnapshot 的内容详解;
EventHandle——经常被忽略的泄漏;
网红 Vue/React——SSR 时记得注意这些;
co 递归、logger 对象实例无限制和 graphql 使用不当引发的典型内存泄漏案例深度分析;
一些总结。
讲师介绍:
黄一君
阿里云 高级开发工程师
毕业于华南理工大学,刚毕业时一度想要从事的是 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
评论