我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解Node.js 应用高 CPU 占用率分析方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解Node.js 应用高 CPU 占用率分析方法

本地运行 Node.js 应用

我们在本地运行 Node.js 应用,使用 --inspect 标志启动应用程序,再次执行负载测试,在 Chrome 浏览器中打开 chrome://inspect:

单击应用下方的 inspect 按钮,然后开始 CPU 占用率分析:

等待一段时间后,就能看到 CPU profile 的结果:

如何采集生产系统上的 Node.js 应用性能数据

在大多数情况下,如果性能问题只能在生产系统重现,那么这种问题分析起来确实很棘手,因为我们需要相同的环境配置、相同的数据库、缓存等数据。 性能问题可能只针对某些类别的用户,因为他们有特定的数据。

在生产环境开启调试模式?这不是一个好的选择,因为在调试模式下 Node.js 进程会消耗更多资源,而且不安全。

但是有一个更好的方法,使用检查器模块 nodejs.org/api/inspect… 按需获取配置文件。 它是一个 Node.js 内置模块,开发人员不必安装任何额外的依赖项,但建议使用 inspector-api .

它是一个带有 Promise 支持的简单包装器。 让我们创建一个记录 CPU 配置文件的端点。

下面是为 NestJS 创建一个示例,对于其他框架,它看起来非常相似:

代码如下:

import { Controller, Post } from '@nestjs/common'
import { promisify } from 'util'
import Inspector from 'inspector-api'
const profileRecordTime = 10000
@Controller('/profile')
export class ProfileController {
  @Post('/cpu')
  async cpu() {
    // don't wait till recording is finished
    setImmediate(async () => {
      // cpu profile will be saved in temp dir
      const inspector = new Inspector({ storage: { type: 'fs' } })
      // enabling and starting profiling
      await inspector.profiler.enable()
      await inspector.profiler.start()
      // wait for 10 seconds and stop
      await promisify(setTimeout)(profileRecordTime)
      await inspector.profiler.stop()
      console.log('CPU profile has been written')
      await inspector.profiler.disable()
    })
    return true
  }
}

所有代码都用 setImmediate 包裹,因为我们不需要等到录制结束。 让我们用 curl 测试一下:

curl -X POST http://127.0.0.1/profile/cpu

10 秒之后,我们在 temp 文件夹得到了 CPU profile 的采集结果:

如果不想将此功能添加为 HTTP 端点,则可以将它们包装在进程信号处理程序中,如下所示:

import { promisify } from 'util'
import Inspector from 'inspector-api'
const profileRecordTime = 10000
process.on('SIGUSR1', async () => {
  const inspector = new Inspector({ storage: { type: 'fs' } })
  await inspector.profiler.enable()
  await inspector.profiler.start()
  await promisify(setTimeout)(profileRecordTime)
  await inspector.profiler.stop()
  console.log('CPU profile has been written')
  await inspector.profiler.disable()
})
process.on('SIGUSR2', async () => {
  const inspector = new Inspector({ storage: { type: 'fs' } })
  await inspector.heap.enable()
  await inspector.heap.startSampling()
  await promisify(setTimeout)(profileRecordTime)
  await inspector.heap.stopSampling()
  console.log('CPU profile has been written')
  await inspector.heap.disable()
})

然后使用 kill 命令发送信号:

  • kill -USR1 ${pid} // for CPU
  • kill -USR2 ${pid} // for Heap

以上就是详解Node.js 应用高 CPU 占用率分析方法的详细内容,更多关于Node.js 应用高 CPU 占用率的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解Node.js 应用高 CPU 占用率分析方法

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

下载Word文档

猜你喜欢

详解Node.js 应用高 CPU 占用率分析方法

这篇文章主要为大家介绍了Node.js 应用高 CPU 占用率分析方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

java应用cpu占用过高问题分析及解决方法

使用jstack分析java程序cpu占用率过高的问题1,使用jps查找出java进程的pid,如37072,使用top -p 14292 -H观察该进程中所有线程的CPU占用。[root@cp01-game-dudai-0100.cp01
2023-05-31

cpu占用高的解决方法

这篇文章主要为大家展示了“cpu占用高的解决方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“cpu占用高的解决方法”这篇文章吧。1.首先,我们可以尝试修改一下注册表,在电脑桌面上按下Windo
2023-06-28

win8系统开机CPU占用率太高的解决方法

这篇文章主要为大家展示了“win8系统开机CPU占用率太高的解决方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“win8系统开机CPU占用率太高的解决方法”这篇文章吧。1.首先,咱们需要返回到
2023-06-27

解决winXP中CPU占用率100%的方法

CPU占用率高的九种可能 1、防杀毒软件造成故障 由于新版的KV、金山、瑞星都加入了对网页、插件、邮件的随机监控,无疑增大了系统负担。处理方式:基本上没有合理的处理方式,尽量使用最少javascript的监控服务吧,或者,升级你的硬件配
2023-05-23

windows8开机CPU占用率高硬盘灯长闪故障分析及解决

Windows 8刚开机后CPU一直占用20%-30%,硬盘灯长闪,刚安装的Windows 8 并未加装第三方软件。原因分析:核实用户使用微软账户(即Windows live账户)登录,用户使用此账户登录会自动加入家庭组,并在联网时同步当前
2022-06-04

电脑cpu占用过高的解决方法

电脑长时间使用后出现高CPU占用问题时应采取什么措施?。而这个时候,电脑的运转时间也会越来越十分的慢,cpu也会十分的热,而cpu发烫比较严重的过程中会巨大的减少电脑的使用期限,那麼电脑cpu占用过高怎么办呢?下面让小编为各位产生电脑cpu
2023-07-10

Win10 电脑CPU占用率高解决办法(图文教程)

许多用户反映使用Win10时发现CPU占用率很高,系统变得很卡,非常头疼,Win10 CPU占用率高怎么办呢?下面告诉大家几种Win10 CPU占用率高的解决方法,以供参考。 解决方法 方法一:减少电脑启动项 按Win+R键打开运行窗口,输
2023-05-22

win7 cpu占用过高怎么办? windows7cpu占用过高解决方法汇总

方法一 1、驱动没有经过认证,造成CPU资源占用过高大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。 2、防、杀毒软件造成故障由于一些防、杀毒软加入了对网页、插件、邮件的随机监控,无疑增大了系统负担,可以根据情况有选择的开启服务。
2023-06-08

Runtimebroker.exe进程占用CPU过高的解决方法

这篇文章主要为大家展示了“Runtimebroker.exe进程占用CPU过高的解决方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Runtimebroker.exe进程占用CPU过高的解决方
2023-06-27

Win7 32位中audiodg进程CPU占用率过高问题解决方法

最近有用户win7 32位操作系统下使用酷狗音乐、PPS或千千静音等等播放器时,在任务管理器中查看到audiodg.exe进程CPU占用率过高,导致系统运行缓慢甚至出现假死现象,出现这种问题该如何解决呢?Win7 32位系统使用播放器aud
2023-06-13

Linux系统中CPU占用率较高问题排查思路与解决方法

前言 作为 linux 运维工程师,在日常工作中我们会遇到 Linux服务器上出现CPU负载达到100%居高不下的情况,如果CPU 持续跑高,则会影响业务系统的正常运行,带来企业损失。很多运维的同学遇到这种状况往往会不知所措,对于CPU过载
2022-06-04

阿里云服务器CPU占用高的解决方法

本文将介绍阿里云服务器CPU占用高的原因以及解决方法。通过了解CPU占用高的原因,我们可以采取相应的措施来优化服务器性能,提高用户体验。1.CPU占用高的原因分析阿里云服务器CPU占用高的原因可能有多种,以下是一些常见的原因:应用程序负载过高:如果服务器上运行的应用程序负载过高,会导致CPU占用率增加。例如,大量
阿里云服务器CPU占用高的解决方法
2024-01-30

电脑cpu占用过高怎么办的解决方法

当电脑长时间使用后,发现CPU占用率过高,应采取何种措施?。而这个时候,电脑的运行速度也会变得非常的慢,cpu也会非常的热,而cpu发热严重的时候会极大的缩短电脑的使用寿命,那么电脑cpu占用过高怎么办呢?接下来让小编为大家带来电脑cpu占
2023-07-16

win10占用硬盘高怎么办?win10磁盘占用率达100%解决方法

wihttp://www.cppcns.comn10占用硬盘高怎么办呢?很多升级为win10的用户都出现了win10系统磁盘占用率50%或100%的情况,这样让系统的运行速度下降很多,而且对硬盘的伤害也很大,这该怎么办呢?下文小编就为大家带
2023-06-13

win8磁盘占用100怎么办 win8磁盘占用率100%问题分析及解决方法

之前有不少Win8用户反馈,Win8磁盘使用率经常处于100%,之前也一直没有找到有效的解决办法。业界一直称Win8磁盘占用100是一个已知Wn8问题,我们只能等待微软更新来解决,并且不少朋友称Win8磁盘占用100很容易损耗固态硬盘,因此
2022-06-04

编程热搜

目录