AI考拉技术分享会--Node.js APM 软件调研报告
前言
本期分享意在优化node服务的性能,侧重应用运行信息收集这一块,寻找适合dev们使用的APM。因此,我们对一些支持 Node.js 的 APM 软件做了一次调研。 在分别介绍每个软件之前,我们要先阐述使用这些软件的目的:它可以发现慢的 http 请求,并且可以查看当时的 Node 服务状态(包括内存 CPU 占用状态),database 状态(这里是 mongodb),帮助 dev 准确分析出请求处理缓慢的原因。
下文的体验报告将以此目标为标准进行评价。
软件列表
本次体验的 APM 软件有:
名称 | 介绍 | 开源/收费情况 |
---|---|---|
atatus | 支持多种语言,包括前端 | 不开源,收费 |
newrelic | 支持多种语言,包括前端 | 开源,收费 |
keymetrics | pm2, Node 应用管理器 | 开源,限额免费 |
Pandora.js | 阿里出品,Node 应用管理器 | 开源,免费(自建服务) |
alinode | Node 底层的监控 | 开源,免费(阿里云上配置实例) |
statsd + graphite + grafana | 监控三件套,开发自由度高 | 开源,自建服务 |
一、atatus
atatus 提供了 npm 工具包 atatus-node 用于监控数据收集,具体配置见官方文档。
使用报告:不是 100 % 的采样率,没有收集到官网宣传的各种维度的信息,使用 Koa 框架,基本上只能看到总的 http response time。
二、newrelic
网址 newrelic.com/ ,和 atatus 基本相同,也提供 npm 工具包 newrelic。
三、keymetrics
偏向应用生命周期管理,可以看到 Node 服务的 cpu 内存等占用情况,有错误(crash)收集功能,国内访问很卡。
四、Pandora.js
Pandora.js 是一个 Node.js 应用监控管理器。它集成了多种类型的能力诸如:监控、链路追踪、调试、进程管理等等。
它是个很有趣的东西,总结来说是它很强大但是还不够成熟,包括 Pandora 自身和整个 Node 生态都不成熟。
(一)、应用管理
可以对标 PM2,不赘述。
(二)、应用度量
有操作系统指标,包含 Load、CPU、内存、磁盘、网络、TCP 等各种指标;
有 Node.js 指标(内存占用);
还可以自定义指标,类似 statsd 做的事情,但是后续的存储和展示嘛,非常简单,没有 statsd + graphite + grafana 好用。
(三)、链路追踪
这个是 Pandora 提供的比较“先进”的功能,链路追踪理论上可以分析出一个 http 哪里耗时多,例如一个 get 请求,做的事情有:查询 db、调用第三方服务等。链路追踪会记录每一个环节的耗时:
链路追踪的实现依赖了 Node 的一个实验性特性 async_hooks,因为是新特性,目前还有很多问题没有解决,例如 mongoose 和 superagent 两个工具包的 Promise 实现方式会导致 async_hooks,具体可以见我们在 Pandora 提的 issue ,也就是说,如果你刚好用了这两个框架,Pandora 链路追踪就失效了。
五、alinode
Node.js 性能平台 https://cn.aliyun.com/product/nodejs ,alinode 是在 node runtime 层面做的应用信息收集,而不是上述各个框架在应用层进行信息收集,所以 alinode 可以监控到进程数据,堆快照、堆时间线、CPU Profile、GC Trace 等非常底层的信息,如果你的应用性能瓶颈在 Node 服务本身,使用该工具会有很大的帮助,如果你的应用性能瓶颈在 DB,那应该是用 DB 监控工具。
六、statsd + graphite + grafana
这个三件套有意思的是,监控指标是开发自己定义的,考拉用这三件套监控请求处理时间,记录每个请求的处理时间。
这样在 grafana 上可以快速看出当前应用的请求量与趋势,已经快速分析哪些接口缓慢。
接口访问量的趋势变化:
处理最慢的接口:
这套工具的优势在于 grafana, 提供了非常直观的图表。
这套工具的搭建方法,我们后续再继续深入讨论。
总结
回到我们的目标“帮助 dev 准确分析出请求处理缓慢的原因”,理论上最贴合这个目标的是 Pandora.js ,但是我们还需要再等等,等它成熟。
最简单而强大的是 statsd + graphite + grafana 三件套,不用考虑 atatus newrelic 等。 如果你使用 Node 做高并发服务,alinode 将会很有用。
著作权归本文作者所有,未经授权,请勿转载,谢谢。
AI考拉技术分享会--Node.js APM 软件调研报告相关推荐
- AI考拉技术分享会—手把手教你入门UI 自动化测试 Appium
2019独角兽企业重金招聘Python工程师标准>>> AI考拉日常技术分享会,前有众多前后端以及android大神分享,这次测试老司机Eric也放招,手把手带devs入门UI自动化 ...
- AI考拉技术分享--布隆过滤器实战
2019独角兽企业重金招聘Python工程师标准>>> 前言 今天是中国传统佳节"猿宵节",是程序猿通宵赶代码的佳节. AI考拉的技术小伙伴志在打破传统,以&qu ...
- AI考拉技术分享会--IDE 常用功能 for Node.js
前言 今天是属于大家的1024节,程序猿的日常工作离不开IDE的支持,在今天这个值得庆祝的日子,考拉的coders整理了工作中常用的IDE功能,大家节日快乐, 向程序猿致敬,向加班SAY NO! 一. ...
- 加入AI考拉大家庭,是一种怎样的体验?--来自考拉码农的心声
hi,各位帅气又多金,外表冷酷实则内心热情的技术猿: 这是考拉拉第二次踏入这片专属程序猿的天地.为了让大家更加全面了解考拉拉背后的大家庭-AI考拉,我们随机采访了公司的程序猿萌,让他们简单描(tu)述 ...
- node.js 桌面软件框架 electron 开发流程
##node.js 桌面软件框架 electron 开发流程 ####步骤 1,安装electron npm --g electron 2,创建工程 //新建app文件夹 mkdir app //创建 ...
- node 升级_技术周刊( Node.js 12 性能大提升 2019-04-30)
前端快爆 Node.js 12 发布,该版本带来了巨大的性能提升.V8 升级到 7.4 带来了诸多新特性,比如 Private Class Fields.Array#{flat,flatMap} 等: ...
- node html5,html5前端入门教程分享:Node.Js 框架
项目前期准备: 以express 框架为例 npm i express-generator -g //全局安装express框架 express -e //生成express应用骨架 npm i // ...
- Node.js 2021年开发者报告解读
大家好,我是若川.持续组织了5个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...
- 磐创AI - 专注机器学习技术分享
微信公众号推荐 磐创AI 编辑 安可 今天给大家推荐一个微信公众号「磐创AI」,是一个从三大深度学习框架Tensorflow.Keras与PyTorch的角度剖析AI行业最新动态,机器学习干货文章,深 ...
- 技术分享:用JS实现的3D海浪涌动特效
分享一个基于ThreeJS的3D海浪涌动特效,效果如下: 常可用于页面背景,3D效果,视觉观感很好,海浪会随机涌动,科幻感.技术感强烈. 代码说明 代码会引用ThreeJS库,版本号为56.注:必须是 ...
最新文章
- Mac 安装多个版本jdk
- PHP 函数dirname()使用实例
- mysql 三层架构开发_从三层架构迈向领域驱动设计(转载)
- 在你的 Android App 里接入支付宝
- nll_loss 和 cross_entropy
- python编程从入门到实践之外星人入侵
- activiti报错ProcessEngines.getDefaultProcessEngine()为null
- HPU--1189 Ou à
- php能连接动易吗,动易CMS数据转成dedecms的php程序
- Parser-Free Virtual Try-on via Distilling Appearance Flows代码解析
- 阿里巴巴最新开源软件列表(建议收藏系列)
- css如何修改行内样式
- 第二章:WINDOWS的一些技巧
- 数字图像处理技术与人脸识别
- 汉庭加盟:连锁酒店影视房的市场分析
- Analyze静态分析所出现的问题总结
- 工程学导论-第四章-创造力
- 对于路由地址并未切换,但是地址栏发生地址发生变化原因
- 实时视频通信技术调研
- 手机淘宝构架演化实践
热门文章
- [Link-Cut-Tree][BZOJ2002]弹飞绵羊
- 在vuex的mutations中使用vue的小技巧
- 使用Struts2和jQuery EasyUI实现简单CRUD系统(五)——jsp,json,EasyUI的结合
- StringBuffer是字符串缓冲区
- 生活中的思维风暴——读《谁是谷歌想要的人才》精彩题目小记(二)
- opencv常用函数整理(二)
- fatal error C1010: 是否忘记了向源中添加“#include stdafx.h”?
- Wavesequencer Hyperion for Mac(数字模块化合成器)
- 珍惜吧,这届世界杯之后,怕是再也看不到他们了
- iOS底层探索之类的结构—cache分析(上)