记录Node服务cpu 100%优化过程

2024-01-02 | 467浏览 | 0评论 | 标签:无

前言

最近查看自己服务器状态时,(硬件配置1c2g2m),发现CPU经常占比100%,频率大概2次/周,询问了服务器商,升级硬件实属天价,于是决定从软件层面进行优化。

QQ截图20240102201602.png
(宝塔CPU监控,一个月有11次CPU占满!)

服务器用途

先说说这台服务器的使用情况:
一、API服务 若干(服务端): Node.js(express) + MySql + PM2
二、管理系统 1个(前端):Element-ui + Vue + Nginx
三、静态页面 若干(前端): Element-ui + Vue + Nginx

排查过程

鉴于前端页面不涉及到SSR渲染的方式,所以暂时只从API服务部分着手。

我使用的PM2来管理Node服务,于是使用PM2的日志查看命令pm2 logs,查得错误日志文件路径在/www/wwwlogs/pm2/error.log中。鉴于文件较大,下载到本地查看。

根据宝塔CPU监控显示,最近一次cpu 100%是2023-12-28T09:36:09,搜索日志时间显示如下:

记录Node服务器cpu 100%优化过程

看起来是我一个彩票结果识别接口报的错,在/util.js第229行:

记录Node服务器cpu 100%优化过程

原来是写入文件时在报错,因为这个功能已经下线了,所以代码直接作注释处理。后来发现80%都属于这个问题。

继续查看其它类型报错,还发现了如下错误:

记录Node服务器cpu 100%优化过程

原来是《油管评论下载器》中获取评论接口的请求遇到限频,之前这个下载服务是同步接口,没有并发控制,花了两天时间改成了异步,这个涉及到数据库、前后端的修改,后面有机会再写一篇详细记录(见《Node文件下载服务并发问题优化(数据库方式)》)。

总结

主要报错的点已经处理,相信后面cpu爆炸的情况会大大改善,后期将持续观察。

(本篇完。有疑问欢迎留言探讨)

留言:

*

* (方便回复通知)

打赏
编辑代码 运行结果
退出