注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Node.js調(diào)試指南(全彩)

Node.js調(diào)試指南(全彩)

Node.js調(diào)試指南(全彩)

定 價(jià):¥89.00

作 者: 趙坤 著
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787121341465 出版時(shí)間: 2018-06-01 包裝: 平裝
開本: 16開 頁(yè)數(shù): 244 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《Node.js調(diào)試指南(全彩)》從CPU、內(nèi)存、代碼、工具、APM、日志、監(jiān)控、應(yīng)用這8 個(gè)方面講解如何調(diào)試 Node.js,大部分小節(jié)都會(huì)以一段經(jīng)典的問(wèn)題代碼為例進(jìn)行分析并給出解決方案。其中,第1 章講解CPU 相關(guān)的知識(shí),涉及各種CPU 性能分析工具及火焰圖的使用;第2 章講解內(nèi)存相關(guān)的知識(shí),例如Core Dump 及如何分析 heapsnapshot 文件;第3 章講解代碼相關(guān)的知識(shí),例如如何從代碼層面避免寫出難以調(diào)試的代碼,并涉及部分性能調(diào)優(yōu)知識(shí);第4 章講解工具相關(guān)的知識(shí),涉及常用的Node.js 調(diào)試工具和模塊;第5 章講解APM(Application Performance Management)相關(guān)的知識(shí),例如兩個(gè)不同的應(yīng)用程序性能管理工具的使用;第6 章講解日志相關(guān)的知識(shí),例如如何使用Node.js 的async_hooks 模塊實(shí)現(xiàn)自動(dòng)日志打點(diǎn),并結(jié)合各種工具進(jìn)行使用;第7 章講解監(jiān)控相關(guān)的知識(shí),例如如何使用Telegraf + InfluxDB + Grafana 搭建一個(gè)完整的Node.js 監(jiān)控系統(tǒng);第8 章講解應(yīng)用相關(guān)的知識(shí),給出了兩個(gè)完整的Node.js 應(yīng)用程序的性能解決方案。 《Node.js調(diào)試指南(全彩)》并不適合Node.js 初學(xué)者,適合有一定Node.js 開發(fā)經(jīng)驗(yàn)的人閱讀。筆者傾向于將本書定位成參考書,每一小節(jié)基本獨(dú)立,如果遇到相關(guān)問(wèn)題,則可以隨時(shí)翻到相應(yīng)的章節(jié)進(jìn)行閱讀。

作者簡(jiǎn)介

  趙坤,網(wǎng)名nswbmw,資深 Node.js開發(fā)者,開源項(xiàng)目Paloma、Mongolass和EverBlog作者,崇尚開源,熱愛(ài)分享。 曾出版《Node.js實(shí)戰(zhàn)(雙色)》和《Node.js實(shí)戰(zhàn)(第2季)》。

圖書目錄

第1 章 CPU 1
1.1 理解perf 與火焰圖(FlameGraph) 2
1.1.1 perf 2
1.1.2 火焰圖 6
1.1.3 紅藍(lán)差分火焰圖 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 章 內(nèi)存 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 測(cè)試 Core Dump 26
2.1.5 分析Core 文件 27
2.1.6 --abort-on-uncaught-exception 29
2.1.7 小結(jié) 30
2.2 heapdump 30
2.2.1 使用heapdump 30
2.2.2 Chrome DevTools 32
2.2.3 對(duì)比快照 34
2.3 memwatch-next 35
2.3.1 使用memwatch-next 35
2.3.2 使用Heap Diff 38
2.3.3 結(jié)合 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+ 規(guī)范 48
3.1.2 從零開始實(shí)現(xiàn) Promise 48
3.1.3 Promise 的實(shí)現(xiàn)原理 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 轉(zhuǎn)為yield* 遇到的坑 75
3.2.6 async + bluebird 76
3.3 Error Stack 77
3.3.1 Stack Trace 78
3.3.2 Error.captureStackTrace 80
3.3.3 captureStackTrace 在 Mongolass 中的應(yīng)用 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 版本的對(duì)應(yīng)關(guān)系 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 不會(huì)優(yōu)化的特性 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 的高級(jí)用法 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 基本調(diào)試 134
4.3.2 launch.json 136
4.3.3 技巧 1——條件斷點(diǎn) 138
4.3.4 技巧 2——skipFiles 139
4.3.5 技巧 3——自動(dòng)重啟 140
4.3.6 技巧 4——對(duì)特定操作系統(tǒng)的設(shè)置 142
4.3.7 技巧 5——多配置 142
4.3.8 總結(jié) 144
4.4 debug + repl2 + power-assert 144
4.4.1 debug 144
4.4.2 repl2 146
4.4.3 power-assert 148
4.5 supervisor-hot-reload 151
4.5.1 Proxy 151
4.5.2 用Proxy 實(shí)現(xiàn) Hot Reload 153
4.5.3 supervisor-hot-reload 155
4.5.4 內(nèi)存泄漏問(wèn)題 160
第5 章 日志 161
5.1 koa-await-breakpoint 162
5.1.1 koa-await-breakpoint 的實(shí)現(xiàn)原理 162
5.1.2 使用 koa-await-breakpoint 165
5.1.3 自定義日志存儲(chǔ) 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 啟動(dòng) 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 啟動(dòng) ELK 203
6.2.3 啟動(dòng) APM Server 203
6.2.4 使用 Elastic APM 203
6.2.5 錯(cuò)誤日志 205
第7 章 監(jiān)控 207
7.1 Telegraf + InfluxDB + Grafana(上) 208
7.1.1 Telegraf(StatsD) + InfluxDB + Grafana 簡(jiǎn)介 208
7.1.2 啟動(dòng) docker-statsd-influxdb-grafana 208
7.1.3 熟悉 InfluxDB 209
7.1.4 配置 Grafana 210
7.1.5 node-statsd 211
7.1.6 創(chuàng)建 Grafana 圖表 213
7.1.7 模擬真實(shí)環(huán)境 214
7.2 Telegraf + InfluxDB + Grafana(下) 217
7.2.1 Grafana + ELK 217
7.2.2 監(jiān)控報(bào)警 220
7.2.3 腳本一鍵生成圖表 222
第8 章 應(yīng)用 224
8.1 使用 node-clinic 225
8.2 alinode 227
8.2.1 什么是 alinode 227
8.2.2 創(chuàng)建 alinode 應(yīng)用 228
8.2.3 安裝 alinode 228
8.2.4 使用 alinode 診斷內(nèi)存泄露 229
8.2.5 使用 alinode 診斷 CPU 性能瓶頸 232

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)