广告
返回顶部
首页 > 资讯 > 前端开发 > html >Node服务内存如何监控
  • 802
分享到

Node服务内存如何监控

2024-04-02 19:04:59 802人浏览 泡泡鱼
摘要

本篇文章为大家展示了node服务内存如何监控,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一个 Node 应用实例所以,如何动态监控一个 Node 进程的内存变化呢

本篇文章为大家展示了node服务内存如何监控,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一个 Node 应用实例

所以,如何动态监控一个 Node 进程的内存变化呢?

以下是一个 Node Server 的示例,并且是一个有内存泄漏问题的示例,并且是山月在生产环境定位了很久的问题的精简版。

  ❝    那次内存泄漏问题中,导致单个容器中的内存从原先的 400M 暴涨到 700M,在 800M 的容器资源限制下偶尔会发生 OOM,导致重启。一时没有定位到问题 (发现问题过迟,半个月前的时序数据已被吞没,于是未定位到 Release),于是把资源限制上调到 1000M。后发现是由 ctx.request 挂载了数据库某个大字段而致    ❞

const Koa = require('koa')  const app = new Koa()  function getData () {    return Array.from(Array(1000)).map(x => 10086) }  app.use(async (ctx, next) => {    ctx.data = getData()    await next()  })  app.use(ctx => {    ctx.body = 'hello, world'  })  app.listen(3200, () => console.log('Port: 3200'))

进程内存监控

一些问题需要在本地及测试环境得到及时扼杀,来避免在生产环境造成更大的影响。那么了解在本地如何监控内存就至关重要。

pidstat 是 sysstat 系列 linux 性能调试工具的一个包,竟然用它来调试 linux 的性能问题,包括内存,网络,IO,CPU 等。

「这不仅试用与 node,而且适用于一切进程,包括 python,java 以及 Go

# -r: 指输出内存指标  # -p: 指定 pid  # 1: 每一秒输出一次  # 100: 输出100次  $ pidstat -r -p pid 1 100

而在使用 pidstat 之前,需要先找到进程的 pid

如何找到 Node 进程的 pid

在 node 中可以通过 process.pid 来找到进程的 pid

> process.pid  16425

虽然通过写代码可以找到 pid,但是具有侵入性,不太实用。那如何通过非侵入的手段找到 pid 呢?有两种办法

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2.  通过多余的参数结合 ps 定位进程

  3.  通过端口号结合 lsof 定位进程 

$ node index.js shanyue  # 第一种方法:通过多余的参数快速定位 pid  $ ps -ef | grep shanyue  root     31796 23839  1 16:38 pts/5    00:00:00 node index.js shanyue  # 第二种方法:通过端口号定位 pid  lsof -i:3200  COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME  node    31796 root   20u  IPv6 235987334      0t0  tcp *:tick-port (LISTEN)

使用 pidstat 监控内存

Node服务内存如何监控

从以上代码中可以知道,node 服务的 pid 为 31796,为了可以观察到内存的动态变化,再施加一个压力测试

$ ab -c 10000 -n 1000000 Http://localhost:3200/
# -r: 指输出内存指标  # -p: 指定 pid  # 1: 每一秒输出一次  # 100: 输出100次  $ pidstat -r -p 31796 1 100  Linux 3.10.0-957.21.3.el7.x86_64 (shuifeng)     2020年07月02日  _x86_64_        (2 CPU)               UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command  19时20分39秒     0     11401      0.00      0.00  566768  19800   0.12  node  19时20分40秒     0     11401      0.00      0.00  566768  19800   0.12  node  19时20分41秒     0     11401   9667.00      0.00  579024  37792   0.23  node  19时20分42秒     0     11401  11311.00      0.00  600716  59988   0.37  node  19时20分43秒     0     11401   5417.82      0.00  611420  70900   0.44  node  19时20分44秒     0     11401   3901.00      0.00  627292  85928   0.53  node  19时20分45秒     0     11401   1560.00      0.00  621660  81208   0.50  node  19时20分46秒     0     11401   2390.00      0.00  623964  83696   0.51  node  19时20分47秒     0     11401   1764.00      0.00  625500  85204   0.52  node

对于输出指标的含义如下

  •  RSS: Resident Set Size,常驻内存集,可理解为内存,这就是我们需要监控的内存指标

  •  VSZ: virtual size,虚拟内存

从输出可以看出,「当施加了压力测试后,内存由 19M 涨到了 85M。」

使用 top 监控内存

pidstat 是属于 sysstat 下的 linux 性能工具,但在 Mac 中,如何定位内存的变化?

此时可以使用 top/htop

$ htop -p 31796

Node服务内存如何监控

使用 htop 监控内存

生产环境内存监控

由于目前生产环境大都部署在 k8s,「因此生产环境对于某个应用的内存监控本质上是 k8s 对于某个 workload/deployment 的内存监控」,关于内存监控 metric 的数据流向大致如下:

k8s -> metric server -> prometheus -> grafana

架构图如下:

Node服务内存如何监控

Node服务内存如何监控

❝    以上图片取自以下文章

  •   kubernetes Monitoring with Prometheus[2]

  •   Kubernetes monitoring architecture[3]    ❞

最终能够在 grafana 中收集到某一应用的内存监控实时图:

由于本部分设计内容过多,我将在以下的章节中进行介绍

「这不仅仅适用于 node 服务,而且适用于一切 k8s 上的 workload」

上述内容就是Node服务内存如何监控,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网html频道。

--结束END--

本文标题: Node服务内存如何监控

本文链接: https://www.lsjlt.com/news/74217.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Node服务内存如何监控
    本篇文章为大家展示了Node服务内存如何监控,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一个 Node 应用实例所以,如何动态监控一个 Node 进程的内存变化呢...
    99+
    2022-10-19
  • linux服务器监控之内存、cpu、网络、磁盘
    一、服务器实时内存监控 Linux帮助命令 man:Linux下的函数手册命令,可以查看所有命令的使用方法 ls:  ls -al: ll: 实时监控命令 top:   能够实时监控系统的运行状态,并且可以按照cpu及内存等...
    99+
    2023-10-04
    linux 服务器 网络
  • 阿里云服务器内存使用率如何监控和优化
    阿里云服务器内存使用率是一个重要的性能指标,它直接关系到服务器的运行效率和稳定性。本文将详细说明如何监控阿里云服务器内存使用率,以及如何通过优化来提高服务器的性能。 一、阿里云服务器内存使用率的监控阿里云服务器提供了多种方式来监控内存使用率...
    99+
    2023-11-15
    阿里 使用率 内存
  • 如何获取Node性能监控指标
    这篇文章主要介绍“如何获取Node性能监控指标”,在日常操作中,相信很多人在如何获取Node性能监控指标问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何获取Node性能监控...
    99+
    2022-10-19
  • 如何实现JVM内存监控工具用法
    本篇文章为大家展示了如何实现JVM内存监控工具用法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。你对JVM内存监控工具的使用是否熟悉,这里向大家简单介绍一下,VisualVM囊括的命令行工具包括jp...
    99+
    2023-06-17
  • Node如何排查内存泄漏
    这篇文章主要讲解了“Node如何排查内存泄漏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Node如何排查内存泄漏”吧!在 Nodejs 服务端开发的场景中,内存泄漏 绝对是最令人头疼的问题...
    99+
    2023-07-05
  • 教你如何通过JConsoler监控Tomcat的JVM内存
    目录1.监控Tomcat的方式2.Java自带的监控命令 3.Tomcat故障案例4.配置Tomcat JMX监控5.使用Jsconsole连接JMX查看监控数据通过JConsole...
    99+
    2022-11-12
  • python如何监控某个进程内存的情况
    这篇文章主要讲解了“python如何监控某个进程内存的情况”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python如何监控某个进程内存的情况”吧!python监控某个进程内存测试场景:某个...
    99+
    2023-06-30
  • Linux如何监控cpu以及内存使用情况
    这篇文章主要为大家展示了“Linux如何监控cpu以及内存使用情况”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux如何监控cpu以及内存使用情况”这篇文章吧。top命令是Linux下常用...
    99+
    2023-06-09
  • 如何监控和诊断JVM堆内和堆外内存使用?
    典型回答 了解 JVM 内存的方法有很多,具体能力范围也有区别,简单总结如下: 可以使用综合性的图形化工具,如 JConsole、VisualVM(注意,从 Oracle JDK 9 开始,VisualVM 已经不再包含在 JDK 安装包中...
    99+
    2023-09-24
    jvm java 开发语言
  • bash脚本如何监控cup/内存/磁盘使用率
    目录查看消耗内存最多的前40个进程:自动任务做一个基础资源告警脚本利用free工具监控内存利用率,超过80报警并提取出占用内存最高的前十进程。利用df命令监控磁盘利用率,超过80报警。这篇博客中所写的,在实际工作中并没有...
    99+
    2022-06-04
    bash监控cup使用率 bash监控内存使用率 bash监控磁盘使用率
  • 云服务器监控:如何设置监控其他设备?
    1. 了解云服务器监控功能 在开始设置之前,我们先来了解一下云服务器监控的功能。云服务器监控是一种用于监视和管理云服务器性能和状态的工具。它可以提供实时的监控数据,帮助您了解服务器的运行情况,并及时发现和解决潜在的问题。 2. 设置云服务...
    99+
    2023-10-27
    如何设置 服务器 设备
  • Grafana+Prometheus如何监控MySql服务
    这篇文章主要为大家展示了“Grafana+Prometheus如何监控MySql服务”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Grafana+Prometh...
    99+
    2022-10-18
  • Shell开发实践:服务器的磁盘、CPU、内存的占用监控
    🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业...
    99+
    2023-09-05
    服务器 linux 运维 shell 磁盘监控 原力计划
  • js内存泄漏场景、如何监控及分析详解
    目录前言哪些情况会引起内存泄漏 1. 意外的全局变量 2. 遗忘的定时器 3. 使用不当的闭包 4. 遗漏的 DOM 元素 5. 网络回调 如何监控内存泄漏 如何分析内存泄漏,找出有...
    99+
    2022-11-12
  • 如何监控 Linux 服务器状态
    linux 服务器我们天天打交道,特别是 Linux 工程师更是如此。为了保证服务器的安全与性能,我们经常需要监控服务器的一些状态,以保证工作能顺利开展。 本文介绍的几个命令,不仅仅适用于服务器监控,也适用于我们日常情况...
    99+
    2022-06-04
    如何监控 Linux 服务器状态 Linux 服务器状态
  • navicat for mysql如何监控服务器
    小编给大家分享一下navicat for mysql如何监控服务器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第一步在我们的电...
    99+
    2022-10-18
  • 如何实时监控Nginx服务器
    本篇内容主要讲解“如何实时监控Nginx服务器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实时监控Nginx服务器”吧!Linux运维工程师的首要职责就是保证业务7 x 24小时稳定的运行...
    99+
    2023-06-03
  • node中如何使用Nest.js实现简易版请求监控
    本篇内容介绍了“node中如何使用Nest.js实现简易版请求监控”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2022-10-19
  • 如何利用Bash脚本监控Linux的内存使用情况
    前言 目前市场上有许多开源监控工具可用于监控 linux 系统的性能。当系统达到指定的阈值限制时,它可以发送电子邮件警报。它可以监视 CPU 利用率、内存利用率、交换利用率、磁盘空间利用率等所有内容。 如果你只有很少的系...
    99+
    2022-06-04
    linux监控内存 linux监控内存命令 linux 内存
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作