写点什么

唯快不破——高效定位线上 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:134821

评论

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

数据缓存历险记(四)--LRU大师兄的Java实现

卢卡多多

redis LRU 8月日更

jackson解析泛型的正确写法

4ye

Java Jackson 8月日更

【前端 · 面试 】HTTP 总结(九)—— HTTP 协商缓存

编程三昧

面试 8月日更 HTTP缓存

架构训练营模块四作业

Lemon

趁着课余时间学点Python(八)函数的简单理解

ベ布小禅

8月日更

白话机器学习(6):用Lasso Regression踢出浑水摸鱼的变量

杜嘉平

机器学习

奥运背后的5G赛场,竟然也这么激烈?

脑极体

Grafana 配置 Thanos 查询历史数据

耳东@Erdong

Grafana Prometheus Thanos 8月日更

Node.js 实现存储服务的上传功能【包含前后端代码】

liuzhen007

8月日更

白话机器学习(2):产品经理都在用的线性回归模型

杜嘉平

机器学习 线性回归

负载均衡的原理与设计

海明菌

负载均衡 负载均衡算法 负载均衡架构

白话机器学习(7):人类最好理解的预测模型-决策树Decision Tree

杜嘉平

阿里P8教你Java注解与反射

陈皮的JavaLib

Java 面试 8月日更 java注解 反射机制

白话机器学习(3):理解机器学习中的Bias与Variance

杜嘉平

机器学习

构建Apache Flink 开发环境(四)

Databri_AI

flink IDEA 开发环境

如何加强自己对Java的编码规范

Bob

Java 8月日更

白话机器学习(8):世界上本没有随机森林,决策树多了,也就变成了森林

杜嘉平

机器学习

python-抽象

加里都好

Linux之ping命令

入门小站

Linux

几十种编程语言说Hello World

入门小站

工具

白话机器学习(5):更高端的线性回归模型-Ridge Regression

杜嘉平

机器学习

不装了、摊牌了,我们要搞事情

不脱发的程序猿

程序员 技术 程序人生

白话机器学习(4):模型的裁判-交叉验证Cross-Validation

杜嘉平

机器学习 杜吉普

【Vue2.x 源码学习】第三十篇 - diff算法-比对优化(上)

Brave

源码 vue2 8月日更

白话机器学习:什么机器学习模型?

杜嘉平

机器学习 数据分析 数字化转型

synchronized优化手段:锁膨胀、锁消除、锁粗化和自适应自旋锁...

王磊

Java 并发 synchronized 8月日更

前端之数据结构(六)图

Augus

数据结构 8月日更

【LeetCode】超级丑数Java题解

Albert

算法 LeetCode 8月日更

有什么理由将代码保存为 GBK 编码

HoneyMoose

Java 面试都只是背答案不

HoneyMoose

写作 7 堂课——【4. 联机式写作】

LeifChen

素材 写作技巧 8月日更 联机 写作网感

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