nodejs 如何使用google浏览器进行调试和性能分析
背景
这篇文章主要介绍以下几点
- API使用CPU情况,是否存在API调用链过长,反应时间过长,查找存在问题的函数
- 如何使用google进行断点调试
- 内存使用情况,查看内存增长情况分析是否存在内存泄漏
环境准备
新建一个测试的app.js服务
var http = require('http');
let data = [];
function addData(){
data.push(new Array(1024*1024))
}
const server = http.createServer(app).listen(3000,() =>{
console.log(`server listening 3000`)
})
function app(req,res){
console.log('this is node server')
addData()
res.end('ok')
}
诊断模式启动程序
node inspect index.js
谷歌浏览器里面输入 chrome://inspect/#devices,回车,看到如下画面,点击inspect进入调试窗口,看到第二张图
几个主要菜单功能简介
Profiler
第一个菜单Profiler的作用是分析CPU使用情况,API性能情况 检测程序被执行的时间以及调用的堆栈,点击左上角可以开始cpu分析,在分析期间可以使用
curl http://127.0.0.1:3000
测试程序,测试完成之后点击完成,点击报告,会看到一张分析图,完整调用的一个API,放大,看到下图,大部分的程序都是系统自带来处理http请求的,可以关注app是我们程序的逻辑,横轴是调用执行app花费的时间,可以从图上看出花费的时间是0.4ms
Console
第二个菜单Console的主要作用的日志的打印,刚刚使用curl请求了一次,所以我们能看到请求服务的日志
Sources
第三个菜单Sources主要是调试窗口
- 可以打断点
- 查看调用堆栈
- 以及watch变量
Memory
第四个菜单Memory主要是内存的记录,主要的目的是分析是否有内存泄漏的情况
使用ab发送100请求 ab -n 100 -c 1 http://127.0.0.1:3000/
能看到内存飙升到805M,而且没有任何回落的迹象,说明存在严重内存泄漏