nodejs 如何使用google浏览器进行调试和性能分析
发布于 5 年前 作者 TimLiu1 4533 次浏览 来自 分享
背景

这篇文章主要介绍以下几点

  • 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进入调试窗口,看到第二张图 image.png image.png

几个主要菜单功能简介
Profiler

第一个菜单Profiler的作用是分析CPU使用情况,API性能情况 检测程序被执行的时间以及调用的堆栈,点击左上角可以开始cpu分析,在分析期间可以使用

curl http://127.0.0.1:3000 

测试程序,测试完成之后点击完成,点击报告,会看到一张分析图,完整调用的一个API,放大,看到下图,大部分的程序都是系统自带来处理http请求的,可以关注app是我们程序的逻辑,横轴是调用执行app花费的时间,可以从图上看出花费的时间是0.4ms image.png

Console

第二个菜单Console的主要作用的日志的打印,刚刚使用curl请求了一次,所以我们能看到请求服务的日志 image.png

Sources

第三个菜单Sources主要是调试窗口

  • 可以打断点
  • 查看调用堆栈
  • 以及watch变量 image.png
Memory

第四个菜单Memory主要是内存的记录,主要的目的是分析是否有内存泄漏的情况

image.png

使用ab发送100请求 ab -n 100 -c 1 http://127.0.0.1:3000/ 能看到内存飙升到805M,而且没有任何回落的迹象,说明存在严重内存泄漏

image.png

回到顶部