Taobao FED

标签:Node.js

如何定位 Node.js 的内存泄漏

在 《一次 Node.js 应用内存暴涨分析》中,我们处理了一个 Node.js vm 引发的内存泄漏问题,处理过程也是比较艰辛。而在我们实际开发中,可能经常会碰到内存泄漏的问题,但很多情况下,我们对于这种问题的处理是有些迷茫的,没有一定的操作流程,效率比较低。虽然这种问题对于经验的要求比较高,但如果有一个简单的排查流程,还是会有一定帮助的。 这里简单整理一个流程,欢迎一起探讨,补充。 基础知识

通通连起来——无处不在的流

最近总是听见 liu 这个东西啊,比如 liu 翔低调宣布新恋情啦、 liu 强冬告白奶茶啦、微软停止支持 IE liu 览器啦,最近我们的淘宝前端夜校讲师也提到了 liu (流)的运用。 在 Unix 系统中流就是一个很常见也很重要的概念。 Unix 的哲学:一个程序只做一件事,并做好。程序要能协作。程序要能处理文本流,因为这是最通用的接口。 – Douglas McIlroy 还记得

进程间通信的另类实现

背景Node.js 内置的进程间通信使用非常简单,但也有一定的局限性,只能在父子进程间通信。下面是官方文档给的一个例子。 首先是父进程的 parent.js : 12345678const cp = require('child_process');const n = cp.fork(`${__dirname}/sub.js`);n.on('me

记一次 Node.js 应用内存暴涨分析

起因之前 TMS 在运行时 CPU 中占用率和内存占用一直很高,导致应用运行状态不是很良好,需要频繁重启。经过排查,找出了部分原因: 使用的 html-minifier 模块有问题,如果输入的内容是一个有错误的 HTML 结构,会使解析进入死循环,导致 CPU 占用率 100%。 在使用 vm 模块时,使用姿势错误,导致内存占用无法释放,使内存占用暴涨。 第一个问题我们今天不予讨论,主要

找回 Node.js 里面那些遗失的 ES6 特性

由于 Babel,WebPack, React 技术的流行, 小明同学已经开始在前端代码里面用上了 ECMAScript 2015 (以下称 ES6 ) 的众多特性。import, export, class, arrow function, let const 等等关键词甚至都已经开始变成小明的肌肉记忆。 但是等等,对于小明这样既写 React 又写 Node.js 的的人来说,又有点分裂了。

探究 Node.js 中的 drain 事件

起因最近在用 Node.js 写一些网络请求相关的代码时,频繁在一些开源代码中看到 drain 事件的使用,于是我也依葫芦画瓢写到了自己的代码里面: 12345socket.on('drain', function(){ console.log('drain event fired.');});socket.write('so

Node.js 单元测试:workflow

Talk is cheap, show me the code! 是否还记得小明在《 Node.js 单元测试之我要写测试》里引用的这句话么,不过引用了之后,小明就像跑路了一般再也没见其 code……其实呀,不知道大家有没有关注最近比较火 minggeJs, 稍微联想下你就知道小明最近在忙啥了 O(∩_∩)O~~ 虽说小明现在还写不出 minggeJs 这样的前端库,不过,小明想说的是:当你

Node.js 2015-12-04 漏洞浅析

前言Node.js 在 4 号放出了一个重要的更新,看了下更新日志,主要修复的是一些安全性的漏洞,包括 CVE-2015-8027 和 CVE-2015-6764 这两个漏洞,影响版本还是比较多的,v5.1.0、v4.2.2、v0.12.8 及以下都有波及。在更新发布后,简单看了下漏洞的细节,在这里简单介绍下。 CVE-2015-8027 Denial of Service Vulnerabil

让我们谈谈「生产环境中的 Node.js」- Node 地下铁第1次线下沙龙邀约

作为「新兴」的服务端编程语言,Node.js 的流行是现象级的。 它是开发者的宠儿: GitHub 上最活跃的编程语言; 第三方模块总量和增长在所有编程语言中排名第一; 它在互联网公司的一些成功应用被津津乐道: Netflix 使用 Node.js 接管了所有端的视图层渲染; Uber 的线上应用和实时分发系统完全基于 Node.js 构建; Paypal 已经拥有超过 700 名的 No

多进程下的测试覆盖率

单元测试在 Node.js 项目开发中的重要性就不言而喻了,项目一旦稍微大起来了就经常出现拆东墙补西墙的情况。这边修复了一个 bug,那边又不知道什么时候产生了一个新的 bug,越到后面没有经过完整的测试都不敢随便发布。 代码覆盖率测试的时候,我们常常关心,是否所有代码都测试到了。这个指标就叫做“代码覆盖率”(code coverage),它有四个测量维度。 行覆盖率(line coverag