使用v8-profiler优化node服务的性能

服务的性能主要表现在两个主要方面:吞吐量是否存在内存泄漏吞吐量——我们通常说的速度快慢指标包含有QPS、并发数和响应时间QPS(TPS):每秒钟request/事务 数量并发数: 系统同时处理的request/事务数响应时间: 一般取平均响应时间他们之间的关系:并发数 = QPS * 响应时间当这些指标达不到我们的系统设计要求,或者说系统预估的访问指标时,就需要通过调...
摘要由CSDN通过智能技术生成

服务的性能主要表现在两个主要方面:

  1. 吞吐量
  2. 是否存在内存泄漏

吞吐量——我们通常说的速度快慢

指标包含有QPS、并发数和响应时间

QPS(TPS):每秒钟request/事务 数量

并发数: 系统同时处理的request/事务数

响应时间:  一般取平均响应时间

他们之间的关系:并发数 = QPS * 响应时间

当这些指标达不到我们的系统设计要求,或者说系统预估的访问指标时,就需要通过调优提高指标,或者是增加硬件。

更详细的描述就不在赘述了,因为不是此篇文章的重点。

测量

首先我们先准备一个测试项目,本例的代码稍后展示

接下来我们就可以配置jmeter来对这个服务进行性能测试了。

  1. 首先为测试计划添加线程组
    在这里插入图片描述
  2. 添加http请求
  3. 根据服务端情况填写配置项
    在这里插入图片描述
  4. 添加查看结果树
    在这里插入图片描述
  5. 添加聚合报告
    在这里插入图片描述

到这里,一个最基本的测试组就完成了。可以点击启动查看执行效果了,在查看结果树模块中可以看到发送的请求和收到的相应数据
在这里插入图片描述
再来看看聚合报告
在这里插入图片描述

聚合报告中列出了这次测试的报告信息,这些指标的含义:

  • Label:每个JMeter的element的Name值。例如HTTP Request的Name
  • #Samples:发出请求数量
  • Average:平均响应时间(单位:)。默认是单个Request的平均响应时间,当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间
  • Median:中位数,也就是50%用户的响应时间
  • 90%Line:90%用户的响应时间
  • 95%Line:95%用户的响应时间
  • 99%Line:99%用户的响应时间
  • Min:最小响应时间
  • Max:最大响应时间
  • Error%:本次测试中出现错误的请求的数量/请求的总数
  • Throughput:吞吐量。默认情况下标示每秒完成的请求数(具体单位如下图)
  • KB/sec:每秒从服务器端接收到/发送的数据量

以上的测试与其说是对node服务的测试,倒不如说是对jmeter的测试,因为我们只发送了一次请求,接下来我们就来一次压测,看看结果会怎么样。
如图修改线程组的设置,在10秒内启动200线程,循环执行10次
在这里插入图片描述

执行的结果
在这里插入图片描述

从该结果中可以看出,qps为11,中位数大于16秒,接下来我们看看是否有提升的空间。

调优

目前可以检测服务执行瓶颈的方式很多,我使用了应用最为广泛的v8-profiler

  1. 首先在项目中引入v8-profiler
const profiler = require('v8-profiler');
  1. 使用API生成监控文件
profiler.startProfiling('1', true);
setTimeout(()=>{
   
    var profile1 = profiler.stopProfiling();
    profile1.export()
      .pipe(fs.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值