Node Cpu 100% 问题分析解决

使用prof分析解决问题

准备

进入系统或者容器,关闭原有的服务,用node启动新的服务

遇到的其他问题自行搜索解决(端口重复、pm2退出)

启动项目

启动项目,生成一个刻度文件,isolate-0xnnnnnnnnnnnn-v8.log(其中n是数字)。

sql 复制代码
NODE_ENV=production  node --prof /data/srv/dist/main.js

processed.txt文件生成

通过对刻度文件isolate-0xnnnnnnnnnnnn-v8.log执行命令--prof-process生成 processed.txt

sql 复制代码
node --prof-process isolate-0x62b3c60-762-v8.log > processed.txt

processed.txt文件分析

分析修复processed.txt解决问题(看不懂查资料或者用 ai kimi、通义等进行分析)

比如这里,ticks total 最大的方法,问题就在这里,name 里面有方法名称和路径行数(注意是编译后的文件行数)

在Node.js 中,每次事件循环执行一次完整的过程,我们称之为tick

sql 复制代码
 [JavaScript]:
   ticks  total  nonlib   name
  151918   89.2%   99.9%  LazyCompile: *phpStrtr /data/srv/dist/common/utils/strUtil.js:41:18
     32    0.0%    0.0%  LazyCompile: *resolve node:path:1091:10

其他

结合代码位置,系统日志进行分析解决

sql 复制代码
export function errorCode(str: string, replacementsList: {replaceWord: string, replaceTo: string}[]) {
    const replacements: {[key: string]: string} = {};
    replacementsList.forEach((item) => {
    // 这里没有空判断,导致死循环
        if (item.replaceWord !== '') {
            replacements[item.replaceWord] = item.replaceTo;
        }
    });

    // 继续处理逻辑
}

资料

国行的这叫基础教程页面好看,内容简单,对新手有好

Node.js 简介

了解 process.nextTick()

Node.js --- Profiling Node.js Applications

Node.js --- Flame Graphs

相关推荐
To_OC5 小时前
写了三遍 Todo List,我终于搞懂了 React 父子组件到底怎么通信
前端·javascript·react.js
勇往直前plus6 小时前
Vue3(篇一) 核心概念——响应式模板语法与组件基础
前端·javascript·vue.js
咩咩啃树皮6 小时前
第43篇:Vue3计算属性(computed)完全精讲——缓存机制、依赖计算、业务最优解
前端·vue.js·缓存
徐小夕8 小时前
花了一周,3亿tokens,我开源了一款 Word 文档智能审查平台,文稿自动质检+可视化分析,告别低效人工审核
前端·算法·github
kyriewen9 小时前
别再乱用useEffect了——你写的10个里有8个不该存在
前端·javascript·react.js
Ivanqhz10 小时前
Rust &‘static str浅析
java·前端·javascript·rust
IT_陈寒10 小时前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端
颜酱10 小时前
05 | 召回前置准备:根据业务数据库生成各数据库(读取配置阶段)
前端·人工智能·后端
zandy101111 小时前
衡石 Agentic BI的ReAct 推理框架在 Agentic BI 中的工程化实践
前端·javascript·react.js
罗超驿11 小时前
JavaEE进阶之路:从Web架构原理到HTML标签全解析
前端·html·web·javaee