性能测试
压力测试工具
- apache bench
- webbench
ab使用方法及语句
https://blog.csdn.net/weixin_39089928/article/details/87371792
找到性能瓶颈所在地
性能瓶颈可能在cpu、网卡、硬盘、网关,常常是在nodejs的cpu计算能力
Node.js性能分析工具
- 自带的profile
1、获取性能报告:
node --prof index.js
2、使用ab进行压力测试
eg:
ab -c50 -t15 http://127.0.0.1:3000/download/
// 或者
abs.exe -c50 -t15 http://127.0.0.1:3000/download/
3、分析性能报告:
node --prof-process 性能报告文件名(aaa.log) > 输入的文件(bbb.txt)
使用chrome自带的devtools工具测试(适合初学者)
1、
node --inspect-brk index.js
2、使用chrome的devtools工具,在chrome中输入:
chrome://inspect
start CPU profiling
3、使用ab进行压力测试
4、stop后获取报告
clinic.js
适合大项目来测试
代码优化
计算性能的优化的本质
- 减少不必要的计算
- 空间换时间
Node.js http服务性能优化准则:
将服务阶段的计算提前放到启动阶段来计算
eg:
const app = new koa();
app.use(
mount('/', async (ctx) => {
ctx.body = fs.readFileSync(__dirname + '/source/index.htm', 'utf-8')
})
);
优化后:
将计算放入启动阶段,减少了readFileSync的多次计算和utf-8的多次转换
const app = new koa();
const buffer = fs.readFileSync(__dirname + '/source/index.htm');
app.use(
mount('/', async (ctx) => {
ctx.status = 200;
ctx.type = 'html';
ctx.body = buffer;
})
);
可使用devtools检测内存泄漏变量
内存优化管理
多进程优化
node.js自带 API-cluster 创建多个进程
架构优化
利用CDN+Nginx