《Node.js调试指南 全彩版》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:赵坤编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2018
  • ISBN:9787121341465
  • 页数:234 页
图书介绍:本书从CPU、内存、代码、工具、APM、日志、监控、应用这8个方面讲解如何调试 Node.js,大部分小节都会以一段经典的问题代码为例进行分析并给出解决方案。其中,第1章讲解CPU相关的知识,涉及各种CPU性能分析工具及火焰图的使用;第2章讲解内存相关的知识,例如Core Dump及如何分析 heapsnapshot文件;第3章讲解代码相关的知识,例如如何从代码层面避免写出难以调试的代码,并涉及部分性能调优知识;第4章讲解工具相关的知识,涉及常用的Node.js 调试工具和模块;第5章讲解APM(Application PerformanceManagement)相关的知识,例如两个不同的应用程序性能管理工具的使用;第6章讲解日志相关的知识,例如如何使用Node.js的async_hooks模块实现自动日志打点,并结合各种工具进行使用;第7章讲解监控相关的知识,例如如何使用Telegraf + InfluxDB + Grafana搭建一个完整的Node.js 监控系统;第8章讲解应用相关的知识,给出了两个完整的Node.js应用程序的性能解决方案。本书并不适合Node.js初学者,适合

第1章 CPU 1

1.1 理解perf与火焰图(FlameGraph) 2

1.1.1 perf 2

1.1.2 火焰图 6

1.1.3 红蓝差分火焰图 8

1.2 使用v8-profiler分析CPU的使用情况 11

1.3 Tick Processor及Web UI 16

1.3.1 Tick Processor 16

1.3.2 Web UI 21

第2章 内存 23

2.1 gcore与llnode 24

2.1.1 Core和Core Dump 24

2.1.2 gcore 25

2.1.3 llnode 25

2.1.4 测试Core Dump 26

2.1.5 分析Core文件 27

2.1.6 --abort-on-uncaught-exception 29

2.1.7 小结 30

2.2 heapdump 30

2.2.1 使用heapdump 30

2.2.2 Chrome DevTools 32

2.2.3 对比快照 34

2.3 memwatch-next 35

2.3.1 使用memwatch-next 35

2.3.2 使用Heap Diff 38

2.3.3 结合heapdump使用 40

2.4 cpu-memory-monitor 41

2.4.1 使用cpu-memory-monitor 41

2.4.2 cpu-memory-monitor源码解读 43

第3章 代码 46

3.1 Promise 47

3.1.1 Promise/A+规范 48

3.1.2 从零开始实现Promise 48

3.1.3 Promise的实现原理 50

3.1.4 safelyResolveThen 52

3.1.5 doResolve和doReject 54

3.1.6 Promise.prototype.then和Promise.prototype.catch 55

3.1.7 值穿透 58

3.1.8 Promise.resolve和Promise.reject 60

3.1.9 Promise.all 61

3.1.10 Promise.race 62

3.1.11 代码解析 63

3.2 Async+Await 69

3.2.1 例1:async+await 70

3.2.2 例2:co+yield 71

3.2.3 例3:co+yield* 72

3.2.4 例4:co+bluebird 73

3.2.5 从yield转为yield*遇到的坑 75

3.2.6 async+bluebird 76

3.3 Error Stack 77

3.3.1 Stack Trace 78

3.3.2 Error.capture StackTrace 80

3.3.3 captureStackTrace在Mongolass中的应用 83

3.3.4 Error.prepareStackTrace 84

3.3.5 Error.prepareStackTrace的其他用法 86

3.3.6 Error&stackTraceLimit 88

3.3.7 Long Stack Trace 88

3.4 node@8 89

3.4.1 Ignition+Turbofan 90

3.4.2 版本的对应关系 91

3.4.3 try/catch 91

3.4.4 delete 93

3.4.5 arguments 95

3.4.6 async性能提升 97

3.4.7 不会优化的特性 98

3.5 Rust Addons 100

3.5.1 Rust 100

3.5.2 FFI 100

3.5.3 Neon 103

3.5.4 NAPI 108

3.6 Event Loop 110

3.6.1 什么是Event Loop 110

3.6.2 poll阶段 112

3.6.3 process.nextTick() 112

3.6.4 代码解析 113

3.7 处理uncaughtException 120

3.7.1 uncaughtException 120

3.7.2 使用llnode 121

3.7.3 ReDoS 122

第4章 工具 125

4.1 Source Map 126

4.1.1 uglify-es 126

4.1.2 TypeScript 128

4.1.3 source-map-support的高级用法 129

4.2 Chrome DevTools 129

4.2.1 使用Chrome DevTools 130

4.2.2 NIM 132

4.2.3 inspect-process 133

4.2.4 process._ debugProcess 133

4.3 Visual Studio Code 134

4.3.1 基本调试 134

4.3.2 launch json 136

4.3.3 技巧1——条件断点 138

4.3.4 技巧2—— skipFiles 139

4.3.5 技巧3——自动重启 140

4.3.6 技巧4——对特定操作系统的设置 142

4.3.7 技巧5——多配置 142

4.3.8 总结 144

4.4 debug+rep12+power-assert 144

4.4.1 debug 144

4.4.2 rep12 146

4.4.3 power-assert 148

4.5 supervisor-hot-reload 151

4.5.1 Proxy 151

4.5.2 用Proxy实现Hot Reload 153

4.5.3 supervisor-hot-reload 155

4.5.4 内存泄漏问题 160

第5章 日志 161

5.1 koa-await-breakpoint 162

5.1.1 koa-await-breakpoint的实现原理 162

5.1.2 使用koa-await-breakpoint 165

5.1.3 自定义日志存储 167

5.2 使用async_hooks 168

5.3 ELK 177

5.3.1 安装ELK 177

5.3.2 使用ELK 178

5.4 OpenTracing+Jaeger 182

5.4.1 什么是OpenTracing 182

5.4.2 什么是Jaeger 184

5.4.3 启动Jaeger及Jaeger UI 184

5.4.4 使用OpenTracing及Jaeger 185

5.4.5 koa-await-breakpoint-jaeger 187

5.5 使用Sentry 190

第6章 APM 197

6.1 使用NewRelic 198

6.2 Elastic APM 201

6.2.1 什么是Elastic APM 201

6.2.2 启动ELK 203

6.2.3 启动APM Server 203

6.2.4 使用Elastic APM 203

6.2.5 错误日志 205

第7章 监控 207

7.1 Telegraf + InfluxDB+Grafana(上) 208

7.1.1 Telegraf (StatsD) + InfluxDB + Grafana简介 208

7.1.2 启动docker- statsd-influxdb-grafana 208

7.1.3 熟悉InfluxDB 209

7.1.4 配置Grafana 210

7.1.5 node-statsd 211

7.1.6 创建Grafana图表 213

7.1.7 模拟真实环境 214

7.2 Telegraf + InfluxDB+Grafana(下) 217

7.2.1 Grafana+ELK 217

7.2.2 监控报警 220

7.2.3 脚本—键生成图表 222

第8章 应用 224

8.1 使用node-clinic 225

8.2 alinode 227

8.2.1 什么是alinode 227

8.2.2 创建alinode应用 228

8.2.3 安装alinode 228

8.2.4 使用alinode诊断内存泄露 229

8.2.5 使用alinode诊断CPU性能瓶颈 232