使用 V8 profiler
常用命令
Profile 可以找到具体函数在整个程序中的执行时间和执行时间占比,从而分析到具体的代码问题,V8也提供了Profile日志导出命令。
-
prof 提供各个函数的执行占比:
node --prof app.js。执行命令之后,会在该目录下产生一个*-v8.log的日志文件,处理V8 分析器的输出可以采用命令prof-process -
cpu-prof 包括更加完整的调用栈,可读性更强。
node --cpu-prof app.jsChrome自带了分析CPU Profile日志的工具。打开 Chrome -> 调出开发者工具(DevTools) -> 单击右上角三个点的按钮 -> More tools -> JavaScript Profiler -> Load,加载刚才生成的Cpuprofile文件。
实践
- deploy/entrypoint.sh 中, 添加--prof参数
REGION=${APP_REGION} DEPLOY_ENV=${ENV} node --prof ./server/dist/src/main.js
- 部署到test环境((本地调试: 先build再运行)。 部署成功后在kubernetes plaform的terminal查看, 应该有形式 isolate-0xnnnnnnnnnnnn-v8.log
node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt
cat processed.txt
通过分析processed.txt中的summery,首先找到调用耗时的地方, 并对耗时的函数进行优化。