一、性能测试工具准备
在CentOS上进行Node.js性能测试,需根据测试目标(如HTTP接口性能、内存使用、代码执行效率)选择合适的工具,涵盖内置模块、第三方命令行工具及图形化监控工具。
Node.js原生提供的模块,无需额外安装,适合快速定位代码级性能问题:
performance.now()记录函数执行前后的时间差,精准计算耗时:const { performance } = require('perf_hooks');
const start = performance.now();
// 待测试代码(如循环计算、数据库查询)
for (let i = 0; i < 1e7; i++) {}
const end = performance.now();
console.log(`Execution time: ${end - start} ms`);
heapdump包,通过heapdump.writeSnapshot('/tmp/snapshot.heapsnapshot')保存快照,再用Chrome DevTools的Memory面板分析。适合模拟高并发请求,评估HTTP接口的吞吐量、响应时间等指标:
yum install -y wrk;测试示例(模拟12个线程、400个并发连接,持续30秒):wrk -t12 -c400 -d30s http://localhost:3000/api/test
结果会显示Requests/sec(每秒请求数)、Latency(延迟)等关键指标。npm install -g autocannon;测试示例:autocannon -c 100 -d 10 http://localhost:3000/api/test
yum install -y httpd-tools;测试示例(发送1000个请求,并发10个):ab -n 1000 -c 10 http://localhost:3000/api/test/
适合模拟复杂用户场景(如登录、下单流程),支持多协议(HTTP、WebSocket):
npm install -g artillery;测试脚本示例(test.yml):config:
target: 'http://localhost:3000'
phases:
- duration: 60 # 测试时长60秒
arrivalRate: 100 # 每秒新增100个用户
scenarios:
- flow:
- get: { path: '/' }
运行测试:artillery run test.yml,结果会显示并发用户数、响应时间分布等。./bin/jmeter.sh;通过“线程组”“HTTP请求”“聚合报告”组件配置测试场景,生成可视化报告。用于实时监控系统资源(CPU、内存、磁盘)和应用性能,辅助定位瓶颈:
top/htop:实时查看进程CPU、内存占用(htop需安装,yum install -y htop);vmstat:显示系统虚拟内存、进程、CPU活动(vmstat 1每秒刷新一次);iostat:监控磁盘I/O性能(iostat -x 1查看详细磁盘指标)。node_exporter收集系统指标,用Grafana可视化展示(如CPU使用率趋势图、内存占用饼图)。二、性能测试流程
phases配置模拟用户增长)。wrk -t12 -c400 -d30s http://localhost:3000/api/login),记录测试结果(如Requests/sec、Average Latency)。heapdump分析是否存在内存泄漏。三、常见优化方向
async/await替代回调函数,避免阻塞事件循环;拆分大函数,减少单次执行时间。null);对频繁访问的数据使用缓存(如Redis)。ulimit -n增加文件描述符限制);使用负载均衡(如Nginx)分发请求,提升并发处理能力。