Node.js 性能平台5分钟快速入门

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 首先,确保拥有阿里云账号并开通服务,以及一台可上网的服务器。然后,创建应用并记下App ID和App Secret。通过tnvm安装Node.js性能平台组件,包括alinode和agenthub,检查安装成功的方法是`which node`和`which agenthub`命令显示路径包含`.tnvm`。接着,启动agenthub,并在服务器上运行一个示例应用(demo.js),该应用模拟计算密集型任务。最后,通过阿里云控制台观察监控数据和执行诊断操作。注意,性能平台每分钟上传一次日志,可能需等待几分钟才能看到数据。详细部署指南可参考官方文档。

验证安装是否成功,需要确保which nodewhich agenthub的路径中包括.tnvm即可。

2. 操作指南

I. 创建应用

II. 服务器部署 Node.js 性能平台

a. 安装 Node.js 性能平台所需组件

# 安装版本管理工具 tnvm,安装过程出错参考:https://github.com/aliyun-node/tnvm
wget -O- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash
# 如果遇到网络问题,请切换为如下命令:
# wget -O- https://code.aliyun.com/aliyun-node/tnvm/raw/master/install.sh | bash
source ~/.bashrc
# tnvm ls-remote alinode 查看需要的版本
tnvm install alinode-v3.11.4 # 安装需要的版本
tnvm use alinode-v3.11.4 # 使用需要的版本
npm install @alicloud/agenthub -g # 安装 agenthub

which node
/home/user/.tnvm/versions/alinode/v3.11.4/bin/node
which agenthub 
/home/user/.tnvm/versions/alinode/v3.11.4/bin/agenthub

创建新应用中获得的App IDApp Secret 按如下所示保存为 yourconfig.json

{
  "appid": "12345",                          # 前面申请到的 appid,保存时删掉这条注释。
  "secret": "kflajglkajlgjalsgjlajdgfakjkgj" # 前面申请到的 secret,保存时删掉这条注释。
}

b. 启动 agenthub

agenthub start yourconfig.json
# 通过 agenthub list 查看 agenthub 是否启动成功
# 如果没有 agenthub 实例,通过调试模式启动 agenthub:
# DEBUG=* agenthub start yourconfig.json
# ~/.agenthub.log 查看 agenthub 日志。

c. 复制下面的代码到 demo.js

注意:该 demo 模拟计算密集型应用,请勿在生产环境中使用。

const http = require('http');
const crypto = require('crypto');
const reqHeaders = [];
const algorithm = 'aes-256-cbc';
const key = ['this', 'is', 'a', 'test'].join(' ');
const encode = function(str) {
  var buf = new Buffer(str)
  var encrypted = "";
  var cip = crypto.createCipher(algorithm, key);
  encrypted += cip.update(buf, 'binary', 'hex');
  encrypted += cip.final('hex');
  return encrypted;
};
const decode = function(encrypted){
  var decrypted = "";
  var decipher = crypto.createDecipher(algorithm, key);
  decrypted += decipher.update(encrypted, 'hex', 'binary');
  decrypted += decipher.final('binary');
  return decrypted;
}
http.createServer(function(req, res) {
  reqHeaders.push(req.headers);
  let enc = encode(req.headers['host']);
  let dec = decode(enc);
  res.end('hello')
}).listen(8848);

d. 启动应用

ENABLE_NODE_LOG=YES node demo.js

注意:

若出现提示信息 Environment variable <NODE_LOG_DIR> not configured, </tmp/> will be used to record node internal log.表明运行时日志(非应用日志)存储目录是默认的 /tmp/

III. 通过控制台观察监控数据,执行诊断操作

  • 控制台中观察各个监控信息。
  • Node.js进程数据中查看进程级别的数据。

注意:

1. 本例未配置 等功能。

2. 性能平台每分钟上传一次日志,请等待几分钟后查看数据。

3. 更详细的 Node.js 性能平台 runtime 部署参见 自助式部署 runtime

相关实践学习
Node.js 入门教程文档
Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js使用事件驱动,非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。 V8引擎本身使用了一些最新的编译技术。这使得用Javascript这类脚本语言编写出来的代码运行速度获得了极大提升,又节省了开发成本。对性能的苛求是Node的一个关键因素。 Javascript是一个事件驱动语言,Node利用了这个优点,编写出可扩展性高的服务器。Node采用了一个称为“事件循环(event loop)”的架构,使得编写可扩展性高的服务器变得既容易又安全。提高服务器性能的技巧有多种多样。Node选择了一种既能提高性能,又能减低开发复杂度的架构。这是一个非常重要的特性。并发编程通常很复杂且布满地雷。Node绕过了这些,但仍提供很好的性能。
目录
相关文章
|
7月前
|
监控 JavaScript
|
3月前
|
JavaScript
Nodejs的cnpm包管理器快速入门
介绍Node.js的cnpm包管理器,包括cnpm的实现原理、如何安装cnpm、使用cnpm安装软件包,以及Node.js搜索包的流程。
111 2
Nodejs的cnpm包管理器快速入门
|
3月前
|
存储 JavaScript
Nodejs的npm包管理器快速入门
介绍Node.js的npm包管理器的快速入门,包括包的概念、结构、描述文件、npm常用命令如安装、搜索、移除软件包,以及如何处理常见的npm工具部署错误。
68 2
Nodejs的npm包管理器快速入门
|
4月前
|
JavaScript 前端开发
深入理解Node.js事件循环及其对后端性能的影响
【8月更文挑战第31天】 本文将带你一探Node.js的核心概念—事件循环,揭示其工作原理及如何影响后端应用的性能。我们将从基础的事件驱动模型出发,通过代码示例和性能分析,展示如何有效利用事件循环来提升应用响应速度和处理能力。
|
5月前
|
监控 JavaScript 前端开发
Node中的AsyncLocalStorage 使用问题之AsyncLocalStorage 性能的问题如何解决
Node中的AsyncLocalStorage 使用问题之AsyncLocalStorage 性能的问题如何解决
|
5月前
|
监控 JavaScript 前端开发
Node中的AsyncLocalStorage 使用问题之AsyncLocalStorage 工作时性能的问题如何解决
Node中的AsyncLocalStorage 使用问题之AsyncLocalStorage 工作时性能的问题如何解决
|
6月前
|
JavaScript 前端开发 安全
【JavaScript 】DOM操作快速入门
【JavaScript 】DOM操作快速入门
74 2
|
6月前
|
JavaScript 前端开发 Java
JavaScript快速入门
JavaScript快速入门
31 1
|
5月前
|
SQL 前端开发 JavaScript
JavaScript快速入门 有这一篇就够!
JavaScript快速入门 有这一篇就够!
|
5月前
|
存储 JavaScript 前端开发
如何快速入门使用Vue.js
如何快速入门使用Vue.js
41 0