写点什么

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

评论

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

面试官:order by 是怎样排序的?怎么优化?

一个优秀的废人

Java MySQL 数据库 后端 order by

Gemini Mining双子矿业系统APP开发模板

从Encoder-Decoder模型入手,探索语境偏移解决之道

华为云开发者联盟

神经网络 ASR 语境偏移 CLAS ASR模型

HarmonyOS Connect伙伴峰会重庆站举办 生态建设持续完善

科技汇

PHA挖矿|PHA云算力挖矿系统开发案例

Geek_23f0c3

区块链 云算力挖矿系统开发详解 PHA矿机挖矿

优评海洋APP系统开发模板

BTAU比特金盾系统软件开发内容

科创人|决策易赵祝维:从满足应用需求到服务业务目标,从SaaS服务商到业务合作伙伴

科创人

MySql 通过定义变量更新多表

Flychen

华为云GaussDB(for openGauss)推出重磅内核新特性

华为云开发者联盟

高可用 华为云 内核 GaussDB(for openGauss) 存储引擎

ZooKeeper 分布式锁 Curator 源码 01:可重入锁

程序员小航

zookeeper 源码 分布式锁 curator

事件Event:带你体验鸿蒙轻内核中一对多、多对多任务同步

华为云开发者联盟

鸿蒙 任务 OpenHarmony 事件 LiteOS-M

10分钟理解REACT概念

加百利

React 7月日更

视觉生产技术入门篇

若尘

视觉 7月日更

网络攻防学习笔记 Day76

穿过生命散发芬芳

网络攻防 7月日更

名列GitHub必看榜!腾讯架构师纯手敲Spring Boot高级进阶笔记

Java架构追梦

Java 架构 腾讯 面试 springboot

国内首发!阿里高工手码分布式系统速成笔记!

Java 编程 程序员

干掉 Postman?测试接口直接生成API文档,这个工具贼好用

程序员小富

Java 编程 程序员 开发工具 大学生

北鲲云超算与传统的超算中心有什么不同?

北鲲云

商业智能BI,会成为下一个风口吗?

瓴羊企业智能服务

阿里云 数据中台 数据分析 BI 商业智能

【从零开始学爬虫】采集京东商品信息

前嗅大数据

大数据 爬虫 数据采集 采集商城 采集京东

电脑有什么超简单的录屏方法

淋雨

视频剪辑 Camtasia 录屏软件

Redis on AEP 实践

BUG侦探

redis 傲腾AEP

我可以减肥失败,但我的 Docker 镜像一定要瘦身成功!

尔达Erda

Docker 开源 云原生 镜像 瘦身

深度解析HashMap底层实现架构

华为云开发者联盟

Java hashmap 底层 底层架构 Map接口

阿里云低延时直播 RTS 能力升级 让直播推流效果更佳

阿里云CloudImagine

阿里云 音视频 直播技术 视频云

华为首次发布HarmonyOS职业认证,助力开发者实现职业进阶

科技汇

喜讯:恒拓高科荣获“2020年度华侨城集团优秀数字化服务商”称号

BeeWorks

开源 解决方案 即时通讯 开源软件

了解一下缓存分类、更新、清理策略以及如何处理缓存带来的风险

Jokay

缓存 缓存穿透 缓存击穿 缓存雪崩 缓存设计

WorkPlus综合企业数字化解决方案—华侨城

BeeWorks

企业 移动开 开源软件

Ubuntu Server 20.04搭建Redis集群

玏佾

redis redis集群 搭建 redis cluster

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