本文主要讲解如何使用 OneAPM 提供的信息从内存、CPU 使用、响应速度等方面优化 Node.js 应用。适用于定位于刚刚使用 Node.js 开发后台的读者。本文系 OneAPM 用户投稿,本网站授权转发。

本文你可看到以下内容

  • 为什么要使用 OneAPM
  • OneAPM 优化实例

为什么要使用 OneAPM ?

  1. 初次开发 Node.js 应用的时候,由于缺乏对 Node.js 的全面认识以及知识的缺乏会将大量的时间用在开发功能上,所以开发的功能必将留下一些「坑」。为了填补这些「坑」,首先你得能找到这些他们。
  2. 对于长期运行的后台服务,一些比较明显的问题可以及时的去解决,但是类似内存泄漏,数据库查询慢等需要长期运行才能发现的问题需要不同时间的数据对比才能发现。
  3. 随着业务请求量的提升,你的应用可能会出现「瓶颈」,如何找到「瓶颈」所在则尤为重要。

有了以上需求,我们来看看 OneAPM 能给我们提供什么 ?

  • 响应时间(Response time)

  • 性能指数(Apdex score) Apdex 是一个国际通用标准,是对用户体验满意度的量化值。

  • 吞吐量(Throughput)

  • Web事务(Web transactions)

  • 数据库(Database)
  • 外部服务(External Service)

OneAPM 优化实例

本文截图来自于在 OneAPM 官网上的 demo 实例。在看到响应时间排序图中我们可以看到,排在第一的是登录页面,用户使用的第一个页面就是登录,这个页面就如此慢会让用户的第一印象就不好,我们来看看它到底慢在什么地方了。

点击如图所示的列表项,我们能看到 OneAPM 给我们列出了最近的慢事物列表:


我们点击一个最近的慢事务进去能够看到 OneAPM 已给出了非常清晰的信息显示本次慢事物的耗时主要是在外部请求中。


由于本实例应用登录页面会调用第三方登录接口来实现登录,为了进一步确定是这个第三方登录接口比较缓慢,我们还要排除是由于自身请求量大导致的网络请求缓慢,此时可以使用 OneAPM 提供的 Si 监控来查看应用所在的服务器的情况。

我们的服务器的带宽是100M 的光钎,从 Si 给出的带宽信息可以确认网络问题是出在第三方登录中。

总结

对于初学者,尽管可以在开发初期借助本地的 spy-js 查看各种完整的 call stack 及其耗时,但是线上运行的应用的内存泄漏问题,以及慢事务是需要应用长期运行后才能发现的,所以 OneAPM 的出现让优化线上应用变得如此简单,能极大的方便我们持续优化线上的应用。

本文系 OneAPM 工程师编译整理。想阅读更多技术文章,请访问 OneAPM 官方博客

如何用 OneAPM 优化你的 Node.js 应用?的更多相关文章

  1. Node.js使用supervisor遭遇‘supervisor’不是内部或外部命令,如果解决?

    如果你有 PHP 开发经验,会习惯在修改 PHP 脚本后直接刷新浏览器以观察结果,而你 在开发 Node.js 实现的 HTTP 应用时会发现,无论你修改了代码的哪一部份,都必须终止 Node.js ...

  2. 一名全栈工程师Node.js之路-转

    Node.js 全球现状 虽然 Node.js 在国内没有盛行,但据 StackOverflow 2016 年开发者调查,其中 node.js .全栈.JavaScript 相关的技术在多个领域(包括 ...

  3. 国内最大的 Node.js 社区将 New Relic 的监控产品换成了 OneAPM

    国内最知名的 CNode 社区把 New Relic 的监控产品换成了 OneAPM .难道 APM 的老大 New Relic 已经被 OneAPM 超越? 毋庸置疑,在全球应用性能管理 SaaS ...

  4. Node.js V0.12 新特性之性能优化

    v0.12悠长的开发周期(已经过去九个月了,并且还在继续,是有史以来最长的一次)让核心团队和贡献者们有充分的机会对性能做一些优化. 本文会介绍其中最值得注意的几个. http://www.infoq. ...

  5. Node.js 4.0.0:灵雀云和 OneAPM 的整合测试

    关于 Node.js 4.0.0 稳定版刚刚推出,备受期待,迫不及待地想用它写点东西:此外,要把 Demo 放到 Internet 上得有一个公网 IP ,看到灵雀云挺不错的而且提供域名解析,简直业界 ...

  6. 【译】 Node.js v0.12的新特性 -- 性能优化

    原文: https://strongloop.com/strongblog/performance-node-js-v-0-12-whats-new/ January 21, 2014/in Comm ...

  7. Node.js V0.12新特性之性能优化

    v0.12悠长的开发周期(已经过去九个月了,并且还在继续,是有史以来最长的一次)让核心团队和贡献者们有充分的机会对性能做一些优化.本文会介绍其中最值得注意的几个. 支持塞住模式的可写流 现在可写流可以 ...

  8. Node.js timer的优化故事

    前几天nodejs发布了新版本4.0,其中涉及到一个更新比较多的模块,那就是下面要介绍的timer模块. timers: Improved timer performance from porting ...

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

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

随机推荐

  1. 为apache与mysql创建快捷方式

    为apache与mysql创建快捷方式 1)为apache创建快捷方式(软链接) 以后我们就可以在终端的任一位置,使用apachectl start|stop|restart   2)为mysql创建 ...

  2. Viewport Resizer下载 谷歌前端自适应开发工具

    原文链接:http://www.phpbiji.cn/article/index/id/107/cid/6.html Viewport Resizer下载 谷歌前端自适应开发工具 在前端开发过程中,随 ...

  3. 【Qt】Qt之密码框不可选中、复制、粘贴、无右键菜单等【转】

    简述 在做用户登录.修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同,例如:不能选中.复制.粘贴.无右键菜单等功能,当然设置密码不可见是必须的! 下面介绍两种方式来实现相同的效果. ...

  4. .net(c#) winform文本框只能输入数字,不能其他非法字符

    private void textBox3_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { //阻止从键盘输入键 ...

  5. GitHub for Windows离线安装的方法

    这几天一直在尝试安装GitHub for windows ,安装程序是从https://windows.github.com/ 下载到的OneClick 部署程序,版本号为2.11.0.5.可能是因为 ...

  6. 百度的domain命令到底有用吗?

    曾几何时,站长和seoer们在百度输入domain:xxxxxxxx的时候弹出的结果数量让多少人兴奋和失落,为什么我们对百度的domain命令如此着迷呢?因为我们都认为百度的domain命令是查询网站 ...

  7. GoldenGate单向复制配置示例

    一:环境介绍 --source端 ip地址:192.168.123.10 数据库版本:11.2.0.1.0 32 bit 操作系统版本:centos 4.5 32 bit ogg版本:fbo_ggs_ ...

  8. Golang学习笔记

    一.基础 1. Hello World程序 demo: package main import "fmt" // 注释 //注释 func main() { fmt.Printf( ...

  9. apache2: bad user name ${APACHE_RUN_USER} 解决

    开工后,发现有个虚拟机的apache没起来,调用apache2 -k start 后,提示如下内容: apache2: bad user name ${APACHE_RUN_USER} apache ...

  10. 从零开始学ios开发(十二):Table Views(上)

    这次学习的控件非常重要且非常强大,是ios应用中使用率非常高的一个控件,可以说几乎每个app都会使用到它,它就是功能异常强大的Table Views.可以打开你的iphone中的phone.Messa ...