APM介绍
node多线程模式 接入ELK方式
Node APM平台搭建
如何发现一个 Node.js 应用的问题
道与术→ USE Method 与 APM
Application Performance Management (简称APM)是监控服务的一套技术手段
Utilization(利用率),Saturation(饱和度),Errors(误差)(简称USE) 方法是一种能分析任何系统性能的方法论
1.1 USE Method的概念
资源:应用依赖的硬件资源(CPU,硬盘,内存)
利用率:以资源一个时间段内被使用的百分比来表示,例如:一个CPU以90%的利用率运行
饱和度:某个资源排队的数量
误差/错误:出现异常的数量
node.js常见的 USE Method的指标 CPU/内存/吞吐量 核心的三类指标
1.2 CPU
node.js为 计算密集型(CPU密集型)
另一种为 I/O密集型 磁盘使用率高
CPU的利用率
CPU并非 90%的时间都是在忙着,很大一部分时间在等待,或者说“停顿”了。多数情况下在等待访问内存,其中又以读内存为主。
由于CPU发展比内存快很多,大部分时间,CPU都没有运行,而是在等待内存的返回。所以90%的CPU不一定是因为CPU在忙着计算,过多的内存操作同样可能会导致。
排查计算密集型CPU的利器:火焰图
- X轴表示时间长度,也就是占用的CPU时间
- Y轴从上到下,越接近底部表示越接近系统的底层,对于Node.js来说,上层是js代码,下层是C代码
- 每一层上,每个条幅越宽,表示它在整个运行周期中,占用的CPU越多
1.3 内存的USE指标
process.memoryUseage 可以查看Node.js占用的内存
rss 是进程执行分配的总内存
heapTotal 是V8分配的堆的内存大小
heapUsed 是V8执行期间实际使用的内存
external 是进程使用的一些c的系统占用的内存
1.4 Node.js应用最经常出现的问题-内存泄漏
Node.js的底层V8引擎对内存的使用有上限:64位系统约为1.4G,32位系统约为0.7G。所以Node.js对内存使用限制,实际上是因为V8对内存的使用限制。当内存超过这个数,就会出现-内存泄漏
1.5 QPS
QPS ( Query Per Second )用来衡量服务的性能。QPS 指每秒中能执行的query 。QPS 的数值越高, server能处理的request 越多。
QPS是衡量服务能力的核心指标,是跟着每个API挂钩的。不是跟着应用走的
QPS哪怕是同样的一个应用,不同的服务也会有很大的差异
总结
- APM是服务监控的技术手段,而USE方法则是监控的方法论
- CPU,内存,吞吐量是Node.js应用需要重点关注的点
- 学习火焰图和heap dump