Skip to content

Commit a3ade45

Browse files
huihuimoehyj1991
authored andcommitted
fix: typo
1 parent e4e70fc commit a3ade45

6 files changed

+8
-7
lines changed

0x01_预备篇_常规排查的指标.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040

4141
<a name="7ba73459"></a>
4242
### IV. TCP 连接状态
43-
绝大部分的 Node.js 应用实际上是 Web 应用,每个用户的连接都会创建一个 Socket 连接,在一些异常情况下(比如遭受半连接攻击或者内核参数设置不合理),服务器上会有大量的 TIME_WAIT 状态的连接,而大量的 TIME_WAIT 积压会导致 Node.js 应用的卡死(内核无法为新的请求分配创建新的 TCP 连接),我们可以使用 **netstat -ant|awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}' **命令来确认这个问题。
43+
绝大部分的 Node.js 应用实际上是 Web 应用,每个用户的连接都会创建一个 Socket 连接,在一些异常情况下(比如遭受半连接攻击或者内核参数设置不合理),服务器上会有大量的 TIME_WAIT 状态的连接,而大量的 TIME_WAIT 积压会导致 Node.js 应用的卡死(内核无法为新的请求分配创建新的 TCP 连接),我们可以使用 **netstat -ant|awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}'** 命令来确认这个问题。
4444

4545
<a name="d1fb6ef9"></a>
4646
## 结尾

0x03_工具篇_正确打开 Chrome devtools.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ npm install heapdump --save
8585
接着可以在代码中按照如下方法使用此模块:
8686

8787
```javascript
88-
'use sytrict';
88+
'use strict';
8989

9090
const heapdump = require('heapdump');
9191
heapdump.writeSnapshot('./test' + '.heapsnapshot');

0x05_实践篇_利用 CPU 分析调优吞吐量.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ const fn = ejs.compile(tpl, {
9191
});
9292
```
9393

94-
然后打包后进行压测,此时单机 QPS 从 600 提升至** 4000 **左右,基本达到了上线前的性能预期,为了确认压测下是否还有模板的编译动作,我们继续在 [Node.js 性能平台](https://www.aliyun.com/product/nodejs) 上抓取压测期间 3 分钟的 CPU Profile:<br />
94+
然后打包后进行压测,此时单机 QPS 从 600 提升至 **4000** 左右,基本达到了上线前的性能预期,为了确认压测下是否还有模板的编译动作,我们继续在 [Node.js 性能平台](https://www.aliyun.com/product/nodejs) 上抓取压测期间 3 分钟的 CPU Profile:<br />
9595
![image.png](https://cdn.nlark.com/yuque/0/2019/png/155185/1552633282580-8666926c-4a8f-44a8-abe1-69c21af16731.png#align=left&display=inline&height=290&name=image.png&originHeight=478&originWidth=1479&size=87063&status=done&width=896)
9696

9797
可以看到上述对 koa-ejs 模板进行优化后,ejs.compile 确实消失了,而压测期间不再有大量重复且耗费 CPU 的编译动作后,应用整体的性能比最开始有了 **20** 倍左右的提升。文中 koa-ejs 模块缓存问题已经在 4.1.2 版本(包含)之后被修复了,详情可以见 [cache include file](https://github.com/koajs/ejs/pull/45/files),如果大家使用的 koa-ejs 版本 >= 4.1.2 就可以放心使用。

0x07_实践篇_冗余配置传递引发的内存溢出.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ setInterval(post, 1000);
9797
收到性能平台的进程内存告警后,我们登录到控制台并且进入应用首页,找到告警对应实例上的问题进程,然后参照工具篇中的 [Node.js 性能平台使用指南 - 内存泄漏](https://www.yuque.com/yijun-rrmp0/alinode/fmuovv#0a9ad162) 中的方法抓取堆快照,并且点击 **分析** 按钮查看 AliNode 定制后的分解结果展示:<br />
9898
![image.png](https://cdn.nlark.com/yuque/0/2019/png/155185/1552982454787-01f3bf74-c49f-4c2b-973a-d40bb1a6965b.png#align=left&display=inline&height=367&name=image.png&originHeight=734&originWidth=2708&size=384142&status=done&width=1354)
9999

100-
这里默认的报表页面顶部的信息含义已经提到过了,这里不再重复,我们重点来看下这里的可疑点信息:提示有 18 个对象占据了 96.38% 的堆空间,显然这里就是我们需要进一步查看的点。我们可以点击 **对象名称 **来看到这18 个 `system/Context` 对象的详细内容:<br /><br />![image.png](https://cdn.nlark.com/yuque/0/2019/png/155185/1552982677576-e17518f8-8f02-4ddc-b2ca-a65995dd367a.png#align=left&display=inline&height=594&name=image.png&originHeight=1188&originWidth=2704&size=626744&status=done&width=1352)
100+
这里默认的报表页面顶部的信息含义已经提到过了,这里不再重复,我们重点来看下这里的可疑点信息:提示有 18 个对象占据了 96.38% 的堆空间,显然这里就是我们需要进一步查看的点。我们可以点击 **对象名称** 来看到这18 个 `system/Context` 对象的详细内容:<br /><br />![image.png](https://cdn.nlark.com/yuque/0/2019/png/155185/1552982677576-e17518f8-8f02-4ddc-b2ca-a65995dd367a.png#align=left&display=inline&height=594&name=image.png&originHeight=1188&originWidth=2704&size=626744&status=done&width=1352)
101101

102102
这里进入的是分别以这 18 个 `system/Context`  为根节点起始的支配树视图,因此展开后可以看到各个对象的实际内存占用情况,上图中显然问题集中在第一个对象上,我们继续展开查看:<br />
103103
![image.png](https://cdn.nlark.com/yuque/0/2019/png/155185/1552982813599-1238007e-567f-4f26-82e4-2c7620ea7fa3.png#align=left&display=inline&height=594&name=image.png&originHeight=1188&originWidth=2694&size=811116&status=done&width=1347)

0x08_实践篇_综合性 GC 问题和优化.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
* 进程 CPU 飙高
2929

3030
而且 GC 问题不像之前的 ejs 模板渲染引发的问题,就算我们在 CPU Profile 中可以看到这部分的耗费,但是想要优化解决这个问题基本是无从下手的,幸运的是 Node.js 提供了(其实是 V8 引擎提供的)一系列的启动 Flag 能够输出进程触发 GC 动作时的相关日志以供开发者进行分析:
31-
* **--trace_gc: **一行日志简要描述每次 GC 时的时间、类型、堆大小变化和产生原因
31+
* **--trace_gc:** 一行日志简要描述每次 GC 时的时间、类型、堆大小变化和产生原因
3232
* **--trace_gc_verbose:** 结合 --trace_gc 一起开启的话会展示每次 GC 后每个 V8 堆空间的详细状况
3333
* **--trace_gc_nvp:** 每一次 GC 的一些详细键值对信息,包含 GC 类型,暂停时间,内存变化等信息
3434

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@
5050

5151
以下贡献数据来自 `git summary`:
5252

53-
* [hyj1991](https://github.com/hyj1991) <small>92.3% ( 12 commits )</small>
54-
* [richardwei195](https://github.com/richardwei195) <small>7.7% ( 1 commits )</small>
53+
* [hyj1991](https://github.com/hyj1991) <small>85.7%% ( 12 commits )</small>
54+
* [richardwei195](https://github.com/richardwei195) <small>7.1% ( 1 commits )</small>
55+
* [Hui Hui](https://github.com/huihuimoe) <small>7.1% ( 1 commits )</small>
5556

5657
## LICENSE
5758

0 commit comments

Comments
 (0)