类似推荐
编辑推荐
本书系统讲解调试Node.js的8个方面,适合有开发经验的读者作为参考书。
内容简介
本书从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初学者,适合有一定Node.js开发经验的人阅读。笔者倾向于将本书定位成参考书,每一小节基本独立,如果遇到相关问题,则可以随时翻到相应的章节进行阅读。
章节目录
封面
版权页
前言
目录
第1章 CPU
1.1 理解perf与火焰图(FlameGraph)
1.1.1 perf
1.1.2 火焰图
1.1.3 红蓝差分火焰图
1.2 使用v8-profiler分析CPU的使用情况
1.3 Tick Processor及Web UI
1.3.1 Tick Processor
1.3.2 Web UI
第2章 内存
2.1 gcore与llnode
2.1.1 Core和Core Dump
2.1.2 gcore
2.1.3 llnode
2.1.4 测试Core Dump
2.1.5 分析Core文件
2.1.6--abort-on-uncaught-exception
2.1.7 小结
2.2 heapdump
2.2.1 使用heapdump
2.2.2 Chrome DevTools
2.2.3 对比快照
2.3 memwatch-next
2.3.1 使用memwatch-next
2.3.2 使用Heap Diff
2.3.3 结合heapdump使用
2.4 cpu-memory-monitor
2.4.1 使用cpu-memory-monitor
2.4.2 cpu-memory-monitor源码解读
第3章 代码
3.1 Promise
3.1.1 Promise/A+规范
3.1.2 从零开始实现Promise
3.1.3 Promise的实现原理
3.1.4 safelyResolveThen
3.1.5 doResolve和doReject
3.1.6 Promise.prototype.then和Promise.prototype.catch
3.1.7 值穿透
3.1.8 Promise.resolve和Promise.reject
3.1.9 Promise.all
3.1.10 Promise.race
3.1.11 代码解析
3.2 Async+Await
3.2.1 例1:async+await
3.2.2 例2:co+yield
3.2.3 例3:co+yield*
3.2.4 例4:co+bluebird
3.2.5 从yield转为yield*遇到的坑
3.2.6 async+bluebird
3.3 Error Stack
3.3.1 Stack Trace
3.3.2 Error.captureStackTrace
3.3.3 captureStackTrace在Mongolass中的应用
3.3.4 Error.prepareStackTrace
3.3.5 Error.prepareStackTrace的其他用法
3.3.6 Error.stackTraceLimit
3.3.7 Long Stack Trace
3.4 node@8
3.4.1 Ignition+Turbofan
3.4.2 版本的对应关系
3.4.3 try/catch
3.4.4 delete
3.4.5 arguments
3.4.6 async性能提升
3.4.7 不会优化的特性
3.5 Rust Addons
3.5.1 Rust
3.5.2 FFI
3.5.3 Neon
3.5.4 NAPI
3.6 Event Loop
3.6.1 什么是Event Loop
3.6.2 poll阶段
3.6.3 process.nextTick()
3.6.4 代码解析
3.7 处理uncaughtException
3.7.1 uncaughtException
3.7.2 使用llnode
3.7.3 ReDoS
第4章 工具
4.1 Source Map
4.1.1 uglify-es
4.1.2 TypeScript
4.1.3 source-map-support的高级用法
4.2 Chrome DevTools
4.2.1 使用Chrome DevTools
4.2.2 NIM
4.2.3 inspect-process
4.3 Visual Studio Code
4.3.1 基本调试
4.3.2 launch.json
4.3.3 技巧1——条件断点
4.3.4 技巧2——skipFiles
4.3.5 技巧3——自动重启
4.3.6 技巧4——对特定操作系统的设置
4.3.7 技巧5——多配置
4.3.8 总结
4.4 debug+repl2+power-assert
4.4.1 debug
4.4.2 repl2
4.4.3 power-assert
4.5 supervisor-hot-reload
4.5.1 Proxy
4.5.2 用Proxy实现Hot Reload
4.5.3 supervisor-hot-reload
4.5.4 内存泄漏问题
第5章 日志
5.1 koa-await-breakpoint
5.1.1 koa-await-breakpoint的实现原理
5.1.2 使用koa-await-breakpoint
5.1.3 自定义日志存储
5.2 使用async_hooks
5.3 ELK
5.3.1 安装ELK
5.3.2 使用ELK
5.4 OpenTracing+Jaeger
5.4.1 什么是OpenTracing
5.4.2 什么是Jaeger
5.4.3 启动Jaeger及Jaeger UI
5.4.4 使用OpenTracing及Jaeger
5.4.5 koa-await-breakpoint-jaeger
5.5 使用Sentry
第6章 APM
6.1 使用NewRelic
6.2 Elastic APM
6.2.1 什么是Elastic APM
6.2.2 启动ELK
6.2.3 启动APM Server
6.2.4 使用Elastic APM
6.2.5 错误日志
第7章 监控
7.1 Telegraf+InfluxDB+Grafana(上)
7.1.1 Telegraf(StatsD)+InfluxDB+Grafana简介
7.1.2 启动docker-statsd-influxdb-grafana
7.1.3 熟悉InfluxDB
7.1.4 配置Grafana
7.1.5 node-statsd
7.1.6 创建Grafana图表
7.1.7 模拟真实环境
7.2 Telegraf+InfluxDB+Grafana(下)
7.2.1 Grafana+ELK
7.2.2 监控报警
7.2.3 脚本一键生成图表
第8章 应用
8.1 使用node-clinic
8.2 alinode
8.2.1 什么是alinode
8.2.2 创建alinode应用
8.2.3 安装alinode
8.2.4 使用alinode诊断内存泄露
8.2.5 使用alinode诊断CPU性能瓶颈
Node.js调试指南(全彩)是2018年由电子工业出版社出版,作者赵坤。
得书感谢您对《Node.js调试指南(全彩)》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。