文档章节

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

OneAPM蓝海讯通
 OneAPM蓝海讯通
发布于 2015/07/09 22:49
字数 1538
阅读 45
收藏 1

在这个由软件定义的世界里,企业往往是通过 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 的应用性能进行优化的话,可以点击这里进行下载,免费试用一下!

© 著作权归作者所有

OneAPM蓝海讯通
粉丝 94
博文 631
码字总数 1266889
作品 0
海淀
私信 提问
让你的 Node.js 应用跑得更快的 10 个技巧

Node.js 受益于它的事件驱动和异步的特征,已经很快了。但是,在现代网络中只是快是不行的。如果你打算用 Node.js 开发你的下一个Web 应用的话,那么你就应该无所不用其极,让你的应用更快,...

oschina
2014/08/27
15.5K
25
5 个技巧提升Node应用性能

Node.js是全球领先的用JavaScript——世界上最流行的编程语言创建服务器应用程序的工具。提供web服务器和应用服务器的功能,Node.js被认为是各种以微服务为基础的开发和交付的关键工具。 No...

前端大佬
05/14
0
0
5个提高Node.js应用性能的技巧

“如果你的 node 服务器前面没有 nginx, 那么你可能做错了。”— Bryan Hughes Node.js 是使用 最流行的语言— JavaScript 构建服务器端应用的领先工具 。由于可以同时提供 web 服务器和应用...

力谱宿云
2016/04/14
432
0
OSC 第 80 期高手问答 — 使用 React Native 开发原生 App

OSCHINA 本期高手问答(6月29日- 7月5日)我们请来了 @vczero(王利华)为大家解答关于 使用 React Native 开发原生 App 方面的问题。 王利华,@vczero ,携程框架研发部,无线框架高级研发工...

叶秀兰
2015/06/29
9.8K
30
【译】生产环境下的Node.js——开源监控工具

你认为Node.js应用程序可以拥有的最重要的功能是什么? 是花哨的全文模糊匹配搜索,还是用socket进行实时聊天呢? 你能告诉我可以添加到Node.js应用中的最高级,最惊人和最吸引人的功能是什么...

Make_a_decision
06/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

怎样在磁盘上查找MySQL表的大小?这里有答案

导读 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎...

问题终结者
22分钟前
5
0
jQuery load() 方法实现加载远程数据

jQuery load() 方法是简单但强大的 AJAX 方法。load() 方法从服务器加载数据,并把返回的数据放入被选元素中。 语法: $(selector).load(URL,data,callback);必需的 URL 参数规定您希望加载的...

前端老手
23分钟前
3
0
Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2

问题 上一篇Spring Boot Cache + redis 设置有效时间和自动刷新缓存,时间支持在配置文件中配置,说了一种时间方式,直接扩展注解的Value值,如: @Override@Cacheable(value = "people#${s...

xiaolyuh
32分钟前
9
0
怎样在磁盘上查找MySQL表的大小?这里有答案

我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应...

Linux就该这么学
56分钟前
5
0
Redis

一、Redis支持的几种数据类型:字符串、List、SET、HASH、ZSET 二、Redis的缓存技术主要是为了降低关系数据库的负载并减少网站成本 三、在Redis里面,被MULTI命令和EXEC命令包围的所有命令会...

BobwithB
59分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部