iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >node服务CPU过高如何解决
  • 223
分享到

node服务CPU过高如何解决

2024-04-02 19:04:59 223人浏览 安东尼
摘要

今天小编给大家分享的是node服务CPU过高如何解决,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。 帮同事看一个CPU过

今天小编给大家分享的是node服务CPU过高如何解决,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。

帮同事看一个CPU过高的问题

  • CPU涨了后掉不下去,最终同事排查出来是 某个依赖升级大版本后下线了默认的公共 Redis 配置,(项目较老,很久没人动过)但需要业务方代码里自己配置关闭 redis服务。业务方有信息gap,所以不知道要关闭redis,导致上线后,一直在重试连接redis(多一个请求就多一次重试)

最终我们总结了排查思路,如下,欢迎补充

排查思路

0. 重启实例

部分问题,重启实例就能解决了。

先重启实例,这是必要做的一步,先让服务变得可用。如果后续CPU还是飙升过快,那么可能只能考虑先回滚代码了。飙升不快的话,可以不用回滚,尽快排查问题

1. linux shell 确定是否是node进程造成的

命令一: top

  • 可以发现,主要是node进程在占用CPU。【相关教程推荐:nodejs视频教程】

    [root@*** ~]# top
    
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                     
    680 root      20   0 2290976 168176  34976 S  30.3  2.0 103:42.59 node                                                                                                                        
    687 root      20   0 2290544 166920  34984 R  26.3  2.0  96:26.42 node                                                                                                                        
     52 root      20   0 1057412  23972  15188 S   1.7  0.3  11:25.97 ****                                                                                                           
    185 root      20   0  130216  41432  25436 S   0.3  0.5   1:03.44 ****                                                                                                         
    ...

命令二: vmstat

  • 首先看一个vmstat 2 命令,表示每隔两秒钟采集一次

[root@*** ~]# vmstat 2
procs -----------memory---------------- ---swap-- -----io---- --system-- -----cpu-----
 r  b      swpd  free   buff   cache      si   so    bi    bo   in cs   us sy id wa st
 0  0      0 233481328 758304 20795516    0    0     0     1    0    0  0  0 100  0  0
 0  0      0 233480800 758304 20795520    0    0     0     0  951 1519  0  0 100  0  0
 0  0      0 233481056 758304 20795520    0    0     0     0  867 1460  0  0 100  0  0
 0  0      0 233481408 758304 20795520    0    0     0    20  910 1520  0  0 100  0  0
 0  0      0 233481680 758304 20795520    0    0     0     0  911 1491  0  0 100  0  0
 0  0      0 233481920 758304 20795520    0    0     0     0  889 1530  0  0 100  0  0
  • procs

    r    #表示运行队列(就是说多少个进程真的分配到CPU),当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。

    b   #表示阻塞的进程,在等待资源的进程,这个不多说,进程阻塞,大家懂的。

  • memory

    swpd  #虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。

    free    # 空闲的物理内存的大小

    buff    #linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存

    cache #cache直接用来记忆我们打开的文件,给文件做缓冲,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。

  • swap

    si   #每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。

    so  #每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

  • io

    bi   #块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte

    bo  #块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。

  • system

    in   #每秒CPU的中断次数,包括时间中断

    cs   #每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目

  • cpu

    us   #用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。

    sy   #系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

    id    #空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

    wt   #等待IO CPU时间。

  • 实践

    procs r: 运行的进程比较多,系统很繁忙
    bi/bo: 磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常
    cpu us: 持续大于50%,服务高峰期可以接受, 如果长期大于50 ,可以考虑优化
    cpu sy: 现实内核进程所占的百分比,这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
    cpu wa: 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的, 也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)

参考链接: https://www.cnblogs.com/zsql/p/11643750.html

2. 看代码diff

重启实例还没解决,并且确定了是node进程的问题的话,

查看上线commit,检查一下代码diff,看看是否能找到问题点

3. 打运行时的CPU profiler

这个操作方法和我的另一篇如何快速定位ssr服务端内存泄漏问题 类似

  • 用node --inspect起服务

  • 本地模拟线上环境,用build后的代码,直接build可能会不能用,要控制好环境变量,并且丑化压缩要关掉

    • 比如,让一些环境变量(CDN域名等)指向本地,因为打的包在本地,没上传到CDN

  • 生成 CPU profiler

node服务CPU过高如何解决

如果本地无法模拟出线上的环境?

比如下游rpc和本地就是有隔离,那就只能加代码,去打出profile了 nodejs.org/docs/latest…

node服务CPU过高如何解决

得到profile文件后,用chrome devtool打开

node服务CPU过高如何解决

4. 分析 CPU profiler

  • 结合 profiler 和 代码diff 去找原因

  • 还可以把 profile 文件 上传到 www.speedscope.app/  (文件上传),就能得到cpu profile火焰图  (更详细的使用介绍:www.npmjs.com/package/spe…

node服务CPU过高如何解决

5. 压测校验

可以用ab,或其他压测工具

总结

  • 重启实例

  • 确定是node进程导致的

  • 看代码diff

  • 生成运行时的CPU profiler

  • 结合 profiler 和 代码diff 去找原因

  • 压测校验

关于node服务CPU过高如何解决就分享到这里了,希望以上内容可以对大家有一定的参考价值,可以学以致用。如果喜欢本篇文章,不妨把它分享出去让更多的人看到。

--结束END--

本文标题: node服务CPU过高如何解决

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

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

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

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

下载Word文档
猜你喜欢
  • node服务CPU过高如何解决
    今天小编给大家分享的是node服务CPU过高如何解决,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。 帮同事看一个CPU过...
    99+
    2024-04-02
  • 服务器CPU占用过高如何解决
    服务器CPU占用过高的处理方法:1、检查服务器后台CPU占用过高的进程;2、通过数据分析该进程导致CPU占用过高的原因;3、通过升级服务器配置或者清理服务器后台运行的软件应用解决问题。具体内容如下:定位出来使用资源CPU最多的进程,不管是W...
    99+
    2024-04-02
  • 服务器CPU占用率过高如何解决
    服务器CPU占用率过高可能是由于多种原因引起的,可以采取以下几种方法来解决: 检查系统资源使用情况:使用系统监控工具查看哪些进程...
    99+
    2024-05-09
    服务器
  • 【Java】 服务器cpu过高如何排查和解决?
    文章目录 前言一、常见能够引起CPU100%异常的情况都有哪些?二、服务器CPU使用率飙升异常,黄金4步排查法三、排查 CPU 故障的常用命令四、什么场景会造成 CPU 低而负载确很高呢?五、...
    99+
    2023-09-01
    java 服务器 开发语言
  • sqlserver占用cpu过高如何解决
    SQL Server占用CPU过高可能由多种原因造成,以下是一些常见的解决方法: 优化查询语句:检查并优化频繁执行的查询语句,确...
    99+
    2024-05-10
    sqlserver
  • weblogic占用cpu过高如何解决
    WebLogic占用CPU过高可能是由于以下原因导致的:1. 应用程序负载过大:检查应用程序是否在处理大量请求或并发用户时导致CPU...
    99+
    2023-09-01
    weblogic
  • 电脑cpu温度过高如何解决
    今天小编给大家分享一下电脑cpu温度过高如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。电脑cpu温度过高原因超频引起...
    99+
    2023-06-30
  • 电脑cpu负载过高如何解决
    这篇文章主要介绍“电脑cpu负载过高如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“电脑cpu负载过高如何解决”文章能帮助大家解决问题。电脑cpu负载过高解决方法:一、软件 我们打开软件、文件...
    99+
    2023-07-02
  • 如何解决CPU占用过高问题
    这篇文章主要介绍如何解决CPU占用过高问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!电脑CPU占用过高的原因:原因一、软件方面导致CPU占用过高软件方面主要在于系统问题,如系统过于臃肿,开启了非常多的应用程序或电...
    99+
    2023-06-28
  • 电脑cpu占用过高如何解决
    本文小编为大家详细介绍“电脑cpu占用过高如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“电脑cpu占用过高如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。电脑cpu占用过高的解决方法我们可以先进入...
    99+
    2023-07-01
  • 电脑cpu使用率过高如何解决
    高CPU使用率可能是由于以下原因引起的:1. 病毒或恶意软件:运行一个病毒扫描程序来检测和清除任何可能感染计算机的恶意软件。2. 后...
    99+
    2023-08-23
    电脑
  • qt程序cpu占用过高如何解决
    如果QT程序的CPU占用过高,有以下几种可能的解决方法:1. 优化算法和代码:检查程序中可能存在的性能瓶颈和低效的代码,尝试优化它们...
    99+
    2023-09-16
    qt
  • windows cpu温度过高内存占比高如何解决
    本篇内容介绍了“windows cpu温度过高内存占比高如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!解决方法:按下“win+R”打...
    99+
    2023-06-30
  • 电脑显示cpu占用过高如何解决
    本篇内容介绍了“电脑显示cpu占用过高如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!电脑显示cpu占用过高的解决方法我们可以先进入任...
    99+
    2023-07-01
  • windows看视频cpu占用过高如何解决
    本篇内容介绍了“windows看视频cpu占用过高如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!看视频cpu占用过高的解决方法一般来...
    99+
    2023-07-01
  • win7 dllhost.exe进程占用CPU过高如何解决
    win7 dllhost.exe进程占用CPU过高可能是由于系统文件损坏、病毒感染、程序冲突等原因引起的。解决此问题的方法如下:1....
    99+
    2023-10-20
    win7
  • 服务器CPU占用率过高怎么解决
    服务器CPU占用率过高解决的方法:1、关闭不常用端口和多余启动项,以免消耗系统资源和内存;2、不要安装和运行多余的软件,以免出现CPU内存占用率高的情况;3、安装合适的杀毒软件,以免额外增加系统的负担;4、设置应用程序池的回收时间,可以及时...
    99+
    2024-04-02
  • 笔记本电脑cpu温度过高如何解决
    这篇文章主要介绍“笔记本电脑cpu温度过高如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“笔记本电脑cpu温度过高如何解决”文章能帮助大家解决问题。笔记本电脑cpu温度过高解决方法对电脑机身做...
    99+
    2023-06-30
  • windows联想小新cpu温度过高如何解决
    这篇文章主要讲解了“windows联想小新cpu温度过高如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“windows联想小新cpu温度过高如何解决”吧!解决方法:方法一: CPU散热...
    99+
    2023-06-30
  • 电脑玩游戏cpu占用过高如何解决
    本篇内容介绍了“电脑玩游戏cpu占用过高如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!电脑玩游戏cpu占用过高的解决方法电脑配置带不...
    99+
    2023-07-01
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作