方案1 v8-profiler
1. v8-profiler 添加node性能收集埋点
2. Apachebench压力测试
ab -t 300-c 10-p post.txt -T "application/json" http://localhost:8008/xxx
3. v8-profiler 收集得到 cpuProfile
4. 用chrome的开发者工具 More-tools -> JavaScript Profiler -> Load,读取cpuProfile,查看火焰图
5. 或者使用speedscope根据cupProfile生成火焰图,支持leftHeavy模式,直接将CPU占用率最高的排在最左边,一目了然,快速的可以定位到问题。
方案2 chrome inspect
1. inspect模式启动node程序
node --inspect ./app.js
2. inspect模式启动chrome
chrome://inspect
3. Apachebench压力测试
ab -n 1000 -c 20 http://localhost:3000/
4. 生成profile文件
完成压测之后停止服务,选择save保存文件
5. 使用speedscope根据cupProfile生成火焰图
npm install -g speedscope
speedscope CPU-xxxx.cpuprofile