公司可以使用RAM账号保护账号安全性 查看具体RAM账号创建方法
Node.js 性能平台使用 tnvm(类似nvm) 进行版本维护,采用如下命令安装 tnvm。
wget -O- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash
将 tnvm 添加到系统命令。根据上面命令最后的提示,针对不同操作系统,进行手工操作。例如 linux 系统下
source ~/.bashrc
利用 tnvm 安装需要版本的运行时。请参考 Node.js性能平台运行时版本 选择合适的运行时版本。
查看远端版本
tnvm ls-remote alinode
安装需要版本:
<font color=red>请根据版本对应关系,选择合适(与当前应用使用的 Node.js 版本一致)的 alinode 版本。</font>
tnvm install alinode-vx.y.z
使用vx.y.z的运行时
tnvm use alinode-vx.y.z
agenthub 是为 Node.js 性能平台的常驻代理服务,可以帮助执行一些监控和诊断的操作,并且它包含一组 Node.js 性能平台服务执行任务所需要的命令集合,Node.js 性能平台有且仅有执行这些命令的权限。
agenthub 同时是一个 npm 命令行工具,通过如下命令可以完成安装:
npm install @alicloud/agenthub -g
agenthub 需要一个配置文件来进行使用,agenthub 仅会在配置指定下的目录执行命令或读取日志。
极简配置 最简单的配置只需要传入 appid 和 secret 即可,格式如下:
{
"appid": "<YOUR APPID>",
"secret": "<YOUR SECRET>"
}
其中您的应用 ID 和您的应用 Secret 请在应用设置页面获取。将上述配置保存为 config.json ,完成配置后,请使用以下命令进行执行:
$ agenthub start config.json
使用安装好的 Node.js 性能平台的 runtime 启动并监控应用。
NODE_LOG_DIR=/tmp ENABLE_NODE_LOG=YES node app.js
NODE_LOG_DIR=/tmp ENABLE_NODE_LOG=YES pm2 start app.js
安装 Node.js 性能平台运行时后重新安装 pm2,确保 which pm2 结果中包含 .tnvm 字段;
npm install pm2 -g
将 pm2 所有进程杀掉,尤其是其守护进程 PM2 v0.15.8: God Daemon 不能漏掉;
pm2 kill
ps -ef | grep pm2
kill -9 <pid>
重新用 pm2 启动应用。
$ ENABLE_NODE_LOG=YES pm2 start app.js
要移除、删除或者卸载tnvm,只需要移除~/.tnvm, ~/.npm, and ~/.bower文件夹
绝大部分是因为使用了非alinode启动应用。 由于自己用的pm2自动部署,主要启动命令:
pm2 startOrRestart ecosystem.config.js --env production
通过pm2 ecosystem.config.js的post-deploy
自动部署远程应用,<font color=red>相当于每次都会打开新的shell终端(同nvm,只要新起shell就会使用默认的node版本),导致shell使用的node版本一直是系统默认的Node.js版本。</font>
解决:在部署应用之前,切换node版本为alinode
'post-deploy': 'tnvm use alinode-v5.13.0 && npm run start'
阿里监控后台只返回最近24小时的异常日志
"start": "yarn install && cross-env NODE_LOG_DIR=/tmp/alinode ENABLE_NODE_LOG=YES NODE_ENV=production npm run combine",
"combine": "npm run build && which node && npm run server",
"server": "pm2 startOrRestart ecosystem.config.js --env production",
"build": "node ./build/scripts/build.js",
app.js
console.log('app process.env.NODE_ENV:', process.env.NODE_ENV, process.env.NODE_LOG_DIR, process.env.ENABLE_NODE_LOG);
本地npm start传参都能正常获取到
{"message":"app process.env.NODE_ENV: production /tmp/alinode YES\n","timestamp":"2020-09-11 19:26 +08:00","type":"out","process_id":1,"app_name":"alfred"}
一到服务器上,NODE_LOG_DIR
一直是undefined
{"message":"app process.env.NODE_ENV: production undefined YES\n","timestamp":"2020-09-11 19:19 +08:00","type":"out","process_id":1,"app_name":"alfred"}
解决方法: pm2删除当前进程,再重新启动
pm2 delete <yourapp>
到最后虽然app.js接收到了NODE_LOG_DIR
,监控平台依然获取不到。。。
作为一个有追求的开发,不能就此罢休。
看到文档中有这么句话
==将 pm2 所有进程杀掉,尤其是其守护进程 PM2 v0.15.8: God Daemon 不能漏掉;==
将全部pm2进程杀掉包括守护进程(使用 pm2 管理的应用如何使用 Node.js 性能平台运行时),然后重新用pm2启动应用,可以正常运行监控
应用性能指标
Node.js 性能平台根据 HTTP 的响应时间 RT 来定义用户满意度(默认响应时间 100ms):
指实例自身占用的内存, 可以理解为保存该'数据结构'需要多少内存, 注意不包括它引用的其他实例
计算公式:
Shallow Size = [类定义] + 父类fields所占空间 + 自身fields所占空间 + [alignment]
实例A的Retained Size是指当实例A被回收时, 可以同时被回收的实例的Shallow Size之和
RAM 用户是一个身份实体,它通常代表您的组织中需要访问云资源的人员或应用程序。 https://ram.console.aliyun.com/users
通常的操作步骤如下: