摘要: 使用Easy-Monitor,可以准确定位Node.js应用的性能瓶颈,帮助我们优化代码性能。

当应用出现性能问题时,最大的问题在于:如何准确定位造成性能瓶颈的代码呢?对于Node.js开发者,这里推荐一下Easy-Monitor,它应该是阿里巴巴某个90后程序员开发的。这个NPM模块可以帮助我们快速定位性能瓶颈。

问题

当负载较高时,某个后端模块的响应时间慢了很多,甚至出现超时错误”504 Gateway Time”。通过查看监控可知,这个模块在高峰期的CPU使用量是满负荷的,这有可能是问题所在。

接入Easy-Monitor

接入Easy-Monitor非常简单,在入口js文件中导入即可:

if (process.env.NODE_ENV === "development")
{
const easyMonitor = require("easy-monitor");
easyMonitor("backend");
}

启动应用,访问:http://localhost:12333/index,即可查看Easy-Monitor的UI界面:

采集CPU数据

ab命令可以用于进行压力测试

ab -n 1000 -c 10  -T 'application/json' -p data.json http://localhost:3000/data/

运行ab测试的同时,在easy-monitor界面,选择cpu,然后start。easy-monitor就会默默地采集CPU数据,5分钟之后,就可以看到统计结果:

使用Fundebug,阔以及时发现并修复应用错误,赶紧免费试用吧!!!

修复性能问题

由Easy-Monitor的统计结果可知,函数A是性能瓶颈,消耗了最多的CPU时间。

那么,剩下的工作就非常简单了,对函数A进行性能优化即可。经过分析,函数A进行了大量重复计算,增加2行代码就可以大大地优化其性能。具体细节不再赘述,因为不是本文重点。

优化前后的性能比较

根据ab命令的测试结果,优化前平均每秒处理5.36个,优化后这个数字变成了48.35,是之前的9倍。将这个模块部署之后,服务器的CPU使用率大幅下降,接口的响应时间也恢复了正常。

总结

使用Easy-Monitor,可以将性能瓶颈准确定位到某些函数,然后进行针对性的优化,这样可以帮助我们快速修复性能问题。

参考

版权声明:
转载时请注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2018/02/28/nodejs-performance-tool-easy-monitor/

Node.js性能分析神器Easy-Monitor的更多相关文章

  1. 你不知道的Node.js性能优化,读了之后水平直线上升

    本文由云+社区发表 "当我第一次知道要这篇文章的时候,其实我是拒绝的,因为我觉得,你不能叫我写马上就写,我要有干货才行,写一些老生常谈的然后加上好多特技,那个 Node.js 性能啊好像 D ...

  2. 性能分析神器VisualVM【转】

    性能分析神器VisualVM[转] Posted on 2015-04-17 09:37 WadeXu 阅读(5809) 评论(6) 编辑 收藏 VisualVM 是一款免费的,集成了多个 JDK 命 ...

  3. Java性能分析神器--VisualVM Launcher[1]

    Java性能分析神器1--VisualVM Launcher VisualVM 当你日复一日敲代码的时候,当你把各种各样的框架集成到一起的时候,看着大功告成成功运行的日志,有没有那么一丝丝迷茫和惆怅: ...

  4. 性能分析神器VisualVM

    VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回 ...

  5. Java性能分析神器-JProfiler详解(一)(转)

    前段时间在给公司项目做性能分析,从简单的分析Log(GC log, postgrep log, hibernate statitistic),到通过AOP搜集软件运行数据,再到PET测试,感觉时间花了 ...

  6. PayPal为什么从Java迁移到Node.js 性能提高一倍 文件代码减少44%

    大家都知道PayPal是另一家迁移到Node.js平台的大型公司,Jeff Harrell的这篇博文 Node.js at PayPal  解释了为什么从Java迁移出来的原因: 开发效率提高一倍(2 ...

  7. Java性能分析神器-JProfiler详解(转)

    前段时间在给公司项目做性能分析,从简单的分析Log(GC log, postgrep log, hibernate statitistic),到通过AOP搜集软件运行数据,再到PET测试,感觉时间花了 ...

  8. Intellij IDEA集成JProfiler性能分析神器

    环境 JProfiler 17.1.3(IDEA插件) JProfiler 9.2(可执行软件) IntelliJ IDEA 2017.2.5 下载 下载JProfiler(IDEA)插件 方式1: ...

  9. 性能测试三十八:Java性能分析神器-JProfiler安装和简单介绍

    Jprofiler是一个重量级的工具,需要分别在服务器和windows都装客户端,会损耗性能,用于发现问题后排查问题,而不是常规的监控 JPROFILER工具下载地址:http://www.ej-te ...

随机推荐

  1. Drools规则引擎入门指南(二)

    本篇博客主要讲解Drools常用的属性以及函数 属性 首先我们在resources\rules文件夹下创建一个Property.drl,还有一个DroolsApplicationPropertyTes ...

  2. 使用Java面向对象单词必备

    第一章 class   班级,用声明类 object     目标,整个程序集对大 static  静态的 final  不可更改的,用声明常量 private  私有的,用访问权限 public  ...

  3. springboot集成quartz定时任务课动态执行

    <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</ ...

  4. 编译u-boot问题总结

    问题一: /usr/local/JreTool/opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-ld: warning: cr ...

  5. 【PHP篇】输出方法

    php开始处加:error_reporting(E_ALL & ~E_NOTICE);  //不打印注意 echo: echo “字符串”;   //也可为单引号 echo $变量名; ech ...

  6. 关于 java.toString() ,(String),String.valueOf的区别

    今天,在群里有一个妹子问我一个问题,我开始时草草帮她解答,后来她说她还是没懂,然后自己仔细看了看,才发现自己其实更本没说清楚其中的道理,在查看源代码和API然后在网上看看前辈们的文章才知道了,这个问题 ...

  7. 【Java提高】---通过UUID、SHA-1、Base64组合加密

    通过UUID.SHA-1.Base64组合加密 该篇文章实现的最终效果是: 1)加密是不可逆的. 2)相同字符串加密产生后的字符串都不一样 3)所以要想比较两个字符串是否相等,需要用已经加过密的字符串 ...

  8. 使用Docker发布DNC项目

    项目结构 可以忽略中间三个Console项目 ApiCenter 是一个WebAPI项目,引用了NLog.MQ项目 ApiCenter使用5001端口 public static IWebHost B ...

  9. centOS改编码

    http://jingyan.baidu.com/article/ab69b270de8b4f2ca7189f1d.html cd /rootvim .bashrcLANG="zh_CN.G ...

  10. Hadoop学习笔记(三):java操作Hadoop

    1. 启动hadoop服务. 2. hadoop默认将数据存储带/tmp目录下,如下图: 由于/tmp是linux的临时目录,linux会不定时的对该目录进行清除,因此hadoop可能就会出现意外情况 ...