Debian系统上JS性能测试方法
基准测试用于量化代码片段的执行效率,帮助开发者识别性能差异。常见工具包括:
const Benchmark = require('benchmark');
const suite = new Benchmark.Suite;
suite.add('String.replace', function() {
'hello world'.replace(/world/g, 'Node.js');
})
.on('complete', function() {
console.log(this.map('toString').join('\n'));
})
.run({ async: true });
autocannon -c 100 -d 10 http://localhost:3000/api/test
(-c表示并发数,-d表示持续时间)负载测试模拟多用户访问,评估应用在高负载下的表现;压力测试则通过极端负载验证应用的稳定性。
wrk -t12 -c400 -d30s http://localhost:3000
(-t表示线程数,-c表示并发连接数,-d表示测试时长)实时分析应用的CPU、内存使用情况及函数调用堆栈,帮助定位性能瓶颈。
--inspect或--inspect-brk标志启动Node.js应用,连接Chrome浏览器进行可视化分析:
node --inspect-brk server.js(--inspect-brk会在代码第一行暂停,便于从入口开始分析);chrome://inspect,点击“为Node打开专用DevTools”;内存泄漏会导致应用性能逐渐下降,甚至崩溃,需通过工具检测和分析。
const heapdump = require('heapdump');
// 在需要时生成快照(如收到特定请求时)
heapdump.writeSnapshot('/tmp/snapshot.heapsnapshot');
使用Chrome DevTools的“内存”面板加载快照,查看对象分配情况,识别内存泄漏源(如未清理的定时器、全局变量)。--prof标志开启:node --prof server.js
运行后生成日志文件,使用node --prof-process解析日志,查看函数调用耗时和内存分配情况结合系统工具监控底层资源使用情况,辅助定位性能瓶颈。