Node.js 应用性能优化的五个技巧

原创 2015年07月09日 22:49:07

在这个由软件定义的世界里,企业往往是通过 Web 应用和移动应用程序来提供他们大部分的服务。所以对企业来说,一个非常重要的任务就是要确保用户拥有出色的使用体验。Node.js 正迅速成为时下最流行的平台之一,它被用于方便地搭建响应速度快、易于扩展的网络应用和移动应用程序。通过下图也可以看出,Node.js 正在成为新的主流。

Node.js 应用性能优化的五个技巧

众所周知,Node.js 是单线程服务器,新事件会触发代码的执行,进行一系列 I/O 操作,并在完成后回调。对于 I/O 密集型的应用,例如 Web 和移动应用程序,这种事件驱动异步调用的计算模型非常有用,不过要在一个关键事务里同时跟踪多个异步调用则是一项艰巨的任务。

在不久前, InfoWorld 发布了一篇文章,标题是《Node.js 日趋成熟:面临的新机遇和风险》,在这篇文章中,Serdar Yegulalp 对由 Node.js 驱动应用程序面临的机遇和风险做了评论,他也谈到 Koa、Express 和 Node.js-canvas 项目创造者 TJ Holowaychuk 从 Node.js 的开发社区中退出这件事。对 Holowaychuk 来说,Node.js 是一个很有价值、很有生命力的项目,但 「如果你的应用非常脆弱,难以进行调试,并且很难进行重构和开发的话,那么性能再好也没有用」,他的这番话突出了 Node.js 目前所面临的挑战。

既然 Node.js 已日渐成为主流,而且企业也开始使用 Node.js 来构建他们关键业务的移动端和 Web 端应用程序。那么,提高 Node.js 应用基础架构和异步调用过程的能见度,以及支撑程序和硬件基础设施的可视化,对企业来说就变得至关重要。

应用性能管理「APM」就提供了一个很好的解决方案。APM 可以帮助企业实时地对 Node.js 性能监控,深入调用堆栈,在整个分布式环境中串联起事务,诊断生产和开发环境中的性能瓶颈。而且,企业也需要这种可视性,让潜在问题在真正影响到用户之前就被解决掉。而对于影响用户体验、导致评分很低的性能问题,他们也需要一种深入源码级别的调试手段。

以下是确保 Node.js 程序最佳性能的五个技巧:

1. 确保 Node.js 应用环境获得终端到端的可视性

首先,APM 解决方案可以自动发现应用的拓扑结构和相互依存关系,并基于线上应用程序的行为来跟踪关键事务,然后把它们关联起来。你应该确保自己的解决方案能够跟踪 Node.js 事件循环中所有的异步调用,并结合关键事务组合起来进行分析。同时,你应该能够清楚地看到关键事务端到端的展现和优先程度,而不只是程序和基础设施节点的健康状况。

2. 实时检测程序错误和异常

其实,APM 解决方案应该能够实时地监测到由各个模块抛出的错误和异常。通过不断跟踪业务性能,你应该能够找到那些偏离正常范围的较慢交易,深入到实际问题,在它切实影响到用户之前,主动地修复错误或尽快解决异常问题。

3. 从代码级别监控应用程序

如果想要排查任何性能问题,最好能够深入到源代码级的级别。试想这样一个解决方案,它可以非常深入地监控应用程序,抓到 Node.js 事件循环中所有异步调用并提供调用图。然后,你就可以通过浏览器或移动应用程序,轻松地定位到程序代码中的热点和慢方法。

4. 关注你的终端用户体验

你应该能够使用相同的监控方案,直观地看到全球各地的监测数据,来了解移动端和 Web 端的用户体验。这也能让你快速识别 Node.js 应用程序代码中那些不好的代码,在这些问题切实影响到用户体验之前修复它们,从而避免用户在社交媒体上分享他们糟糕的体验,他们有可能会卸载你的应用程序,甚至还会在 App Store 和其他评论网站上给予差评。

5. 关注 Node.js 应用程序依赖的数据库和服务器

对于频繁访问数据库的现代 I/O 密集型网站,Node.js 非阻塞的特点被认为是非常理想的。所以,关注支撑起 Node.js 应用程序的数据库、服务器等基础设施的性能是非常重要的。你应该能够深入到慢查询、存储过程,或者硬件基础设施层面去快速的诊断和解决 Node.js 应用程序的问题。

作为国内 APM 领域的领军企业,OneAPM 是国内首家支持 Node.js 的应用性能管理云解决方案,不仅可以帮你找到 Node.js 应用内部性能表现最差的事务,还可以定位数据库中能耗最大的部件。为了适应 Node.js, OneAPM 现在也支持非关系型数据库 Redis、MongoDB 以及 Memcached 等等。

Node.js 应用性能优化的五个技巧
Node.js 应用性能优化的五个技巧

除此之外,通过查看性能表现差的第三方 API、Web Services、内存使用量等性能数据,还能够帮助你快速定位性能瓶颈;通过事务的深度 Traces 记录,协助你完成应用性能管理从抽象到具象的追溯过程。如果你想对 Node.js 的应用性能进行优化的话,可以点击这里进行下载,免费试用一下!

版权声明:本文为博主原创文章,未经博主允许不得转载。

NodeJS的代码调试和性能调优

NodeJS的代码调试和性能调优
  • shmnh
  • shmnh
  • 2016年03月17日 01:50
  • 776

Node.js是如何解决服务器高性能瓶颈问题的

1.单线程 在Java、PHP或者.net等服务器端语言中,会为每一个客户端连接创建一个新的线程。而每个线程需要耗费大约2MB内存。也就是说,理论上,一个8GB内存的服务器可以同时连接的最大用户数为...
  • dancheng1
  • dancheng1
  • 2017年09月02日 19:23
  • 248

写给Node.js新手的7个小技巧

一些我更愿意在开始就知道东西 利用 Node.js 开发是一个非常有趣,和令人满足的过程, 他有3万多个模块可以选择使用,并且所有的模块可以非常容易的集成入现有的应用之中。 无论如何,对于...
  • baidu_35738377
  • baidu_35738377
  • 2016年11月05日 09:20
  • 618

浅析系统性能调优

概述 Ø性能优化的思路 首先是较为精准的定位问题,借助于相应的工具包,分析系统性能瓶颈在哪,在根据其性能指标,以及所处于层级决定选择优化的方式方法。在选择优化的方式方法时,大家可以参照以下...
  • benpaobagzb
  • benpaobagzb
  • 2015年08月27日 22:34
  • 306

浅谈性能优化

性能优化的重要性         性能是网站的一个重要指标,除非没得选择(必须到12306上买票,现在好像有所改变【此处并非是技术问题,解决方案改变业务进行分流,即不同时间放票】),否则用户无法忍受一...
  • zuoshoucuoai
  • zuoshoucuoai
  • 2017年06月13日 13:35
  • 164

Node.js 创建的第一个应用

在我们创建 Node.js 第一个 "Hello, World!" 应用前,让我们先了解下 Node.js 应用是由哪几部分组成的: 引入 required 模块:我们可以使用 requ...
  • moxiaoya1314
  • moxiaoya1314
  • 2016年07月25日 09:40
  • 711

Node.js入门到企业Web开发中的应用

NodeJS核心APICommonJS(模块规范) 每个文件是一个模块,有自己的作用域 在模块内部module变量代表模块本身 module.exports属性代表模块对外接口 require特性 m...
  • qq_33936481
  • qq_33936481
  • 2017年10月25日 19:01
  • 962

代码性能优化建议

编写:kesenhoo - 原文:http://developer.android.com/training/articles/perf-tips.html 这篇文章主要介绍一些小细节的优化技巧...
  • lyj1005353553
  • lyj1005353553
  • 2016年12月21日 13:46
  • 668

Spark大数据处理:技术、应用与性能优化(全).pdf

Spark大数据处理:技术、应用与性能优化
  • dragon_hsl
  • dragon_hsl
  • 2015年11月08日 08:54
  • 1510

【备忘】2017年10月Node.js入门到企业Web开发中的应用

课程章节 第1章 课程内容介绍                                                   主要介绍为什么我们录制本次课程、课程包含的主要内容。 ...
  • qq_38155396
  • qq_38155396
  • 2018年01月15日 16:15
  • 54
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Node.js 应用性能优化的五个技巧
举报原因:
原因补充:

(最多只允许输入30个字)