iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >详解Node.js 应用高 CPU 占用率分析方法
  • 566
分享到

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

Node.js 应用高 CPU 占用率Node.js CPU占用率 2022-11-13 18:11:56 566人浏览 独家记忆
摘要

目录本地运行 node.js 应用如何采集生产系统上的 node.js 应用性能数据本地运行 Node.js 应用 我们在本地运行 Node.js 应用,使用 --inspect 标

本地运行 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 占用率的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解Node.js 应用高 CPU 占用率分析方法

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

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

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

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

下载Word文档
猜你喜欢
  • 详解Node.js 应用高 CPU 占用率分析方法
    目录本地运行 Node.js 应用如何采集生产系统上的 Node.js 应用性能数据本地运行 Node.js 应用 我们在本地运行 Node.js 应用,使用 --inspect 标...
    99+
    2022-11-13
    Node.js 应用高 CPU 占用率 Node.js CPU占用率
  • java应用cpu占用过高问题分析及解决方法
    使用jstack分析java程序cpu占用率过高的问题1,使用jps查找出java进程的pid,如37072,使用top -p 14292 -H观察该进程中所有线程的CPU占用。[root@cp01-game-dudai-0100.cp01...
    99+
    2023-05-31
    java cpu ava
  • cpu占用高的解决方法
    这篇文章主要为大家展示了“cpu占用高的解决方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“cpu占用高的解决方法”这篇文章吧。首先,我们可以尝试修改一下注册表,在电脑桌面上按下Windows...
    99+
    2023-06-28
  • win10 cpu占用率高如何解决
    要解决Windows 10中的高CPU占用率问题,可以尝试以下几种方法:1. 结束占用CPU较高的进程:打开任务管理器(按Ctrl ...
    99+
    2023-09-29
    win10
  • 解决winXP中CPU占用率100%的方法
    CPU占用率高的九种可能  1、防杀毒软件造成故障  由于新版的KV、金山、瑞星都加入了对网页、插件、邮件的随机监控,无疑增大了系统负担。处理方式:基本上没有合理的处理方式,尽量使用最少的监控服务吧,...
    99+
    2023-05-23
    方法 占用 解决 Windows 系统 CPU 使用 可能 资源
  • win8系统开机CPU占用率太高的解决方法
    这篇文章主要为大家展示了“win8系统开机CPU占用率太高的解决方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“win8系统开机CPU占用率太高的解决方法”这篇文章吧。首先,咱们需要返回到wi...
    99+
    2023-06-27
  • 电脑cpu占用过高的解决方法
    电脑长时间使用后出现高CPU占用问题时应采取什么措施?。而这个时候,电脑的运转时间也会越来越十分的慢,cpu也会十分的热,而cpu发烫比较严重的过程中会巨大的减少电脑的使用期限,那麼电脑cpu占用过高怎么办呢下面让小编为各位产生电脑cpu占...
    99+
    2023-07-10
  • 服务器CPU占用率过高如何解决
    服务器CPU占用率过高可能是由于多种原因引起的,可以采取以下几种方法来解决: 检查系统资源使用情况:使用系统监控工具查看哪些进程...
    99+
    2024-05-09
    服务器
  • 服务器CPU占用率过高怎么解决
    服务器CPU占用率过高解决的方法:1、关闭不常用端口和多余启动项,以免消耗系统资源和内存;2、不要安装和运行多余的软件,以免出现CPU内存占用率高的情况;3、安装合适的杀毒软件,以免额外增加系统的负担;4、设置应用程序池的回收时间,可以及时...
    99+
    2024-04-02
  • linux程序cpu占用率太高怎么解决
    如果 Linux 程序的 CPU 占用率过高,可以采取以下几个步骤解决:1. 使用 top 或 htop 命令查看占用 CPU 的进...
    99+
    2023-08-08
    linux
  • Win10 电脑CPU占用率高解决办法(图文教程)
    许多用户反映使用Win10时发现CPU占用率很高,系统变得很卡,非常头疼,Win10 CPU占用率高怎么办呢?下面告诉大家几种Win10 CPU占用率高的解决方法,以供参考。 解决方法 方法一:减少电脑启动项 按Win+...
    99+
    2023-05-22
    Win10 CPU占用率
  • Win7 32位中audiodg进程CPU占用率过高问题解决方法
      最近有用户win7 32位操作系统下使用酷狗音乐、PPS或千千静音等等播放器时,在任务管理器中查看到audiodg.exe进程CPU占用率过高,导致系统运行缓慢甚至出现假死现象,出现这种问题该如何解决呢   Win7...
    99+
    2023-06-13
    Win7 32位 audiodg进程CPU占用率过高 问题 CPU 占用率 进程 解决
  • 虚拟主机cpu占用率高如何解决
    虚拟主机的 CPU 占用率高可能是由以下原因导致:1. 资源不足:虚拟主机所分配的 CPU 资源不足以满足当前的负载需求。解决方法可...
    99+
    2023-09-06
    虚拟主机
  • Runtimebroker.exe进程占用CPU过高的解决方法
    这篇文章主要为大家展示了“Runtimebroker.exe进程占用CPU过高的解决方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Runtimebroker.exe进程占用CPU过高的解决方...
    99+
    2023-06-27
  • mysql占用cpu超过100%怎么办?mysql占用cpu特别高的解决方法!
    前段时间我的一个网站经常打不开,通过检查发现服务器cpu占用超过100%;通过top命令发现是mysql占用cpu特别高导致的,于是优化了mysql语句,mysql升级到了mysql8最新版本等,但是并没有什么卵用。过几天有出现这种情况。甚...
    99+
    2023-10-18
    mysql 数据库
  • win7 cpu占用过高怎么办? windows7cpu占用过高解决方法汇总
    方法一     1、驱动没有经过认证,造成CPU资源占用过高   大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。    2、防、杀毒软件造成故障   由于一些防、杀毒软加入了对网页、插件、邮...
    99+
    2023-06-08
    win7 cpu 占用 解决 方法
  • 虚拟主机cpu占用率很高如何解决
    如果虚拟主机的CPU占用率很高,可以尝试以下解决方法:1. 优化网站代码:检查网站的代码是否存在效率低下的部分,尽量减少不必要的计算...
    99+
    2023-09-12
    虚拟主机
  • Tomcat进程占用CPU过高的解决方法
    目录案例上下文切换开销?总结CPU经常会成为系统性能的瓶颈,可能: 内存泄露导致频繁GC,进而引起CPU使用率过高 代码Bug创建了大量的线程,导致CPU频繁上下文...
    99+
    2024-04-02
  • linux php-fpm进程 cpu占用过高 解决方法
    主要解决思路如下: 设置控制php-fpm进程池进程数量。 修改pm.max_children的数量,根据内存来进行分配,系统开一个进程20-30M。比如系统内存1G,那就将差不多能开30个进程,所以可以设置pm.max_children ...
    99+
    2023-09-12
    linux php 服务器
  • idea对CPU的占用率过大问题的解决方法
    背景:昨晚有一次敲完代码运行完程序后,idea非常卡顿,连输入代码都不能进行,因为有点晚并且累了,所有就关了电脑,今天早上再次打开idea,还是一样卡顿,因为idea的试用期明天就到...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作