密集计算会彪高cpu , 这种情况是正常的 。相当于你拿很重的东西必须要这么大的力气才拿得起 。
优化:
分析代码确保没有空耗cpu的无用代码,比如无限循环等 。
通过一些算法进行优化,比如一些空间换时间的算法 。
并行计算(因为nodejs不能直接操作线程,可以使用child_process多进程模式利用多核运算) 。
如果优化代码不能实现预想的效果,可以考虑c++这种运行效率比v8更高的实现,通过node-gyp编译为原生模块 。
nodejs对于cpu密集计算可怕之处是堵塞eventloop,导致后续任务无法执行,无法发挥并发优势,对于一个处理请求的服务器是致命的 。解决这个问题可以使用child_process创建子进程,或者换计算能力更强的机器提供微服务 。
我们碰到过ngnix的类似情况 , 可能有参考意义 。该服务器提供设备固件上传功能,用户可以通过设备的网页前端上传设备固件 , 以后后端程序将固件升级到设备 。
设备的固件大概有100多M大?。颐窃趎gnix服务端编写LUA脚本接受前端网页提交的数据包 。
在整个接受过程中CPU的占用率高达100%,设备整体反应变慢,甚至偶尔崩溃重启 。后来我们研究了ngnix相关配置,没有找到相关的配置 , 甚至交叉编译了相关的模块 , 也只能配置下载的负荷 。
后天我们修改LUA脚本,在收到一个数据包处理之后,sleep毫秒级时间,整个上传数率稍有下降,但是cpu利用率下降到了40%左右,系统稳定性大大增加 。
我想node.js应该也是类似原因,楼主也可以用这种思路,在做一段时间运算以后,sleep一段时间,释放资源给系统 。
【nodejs,密集计算会飙高cpu,那么有没有什么方案可以尽可能的优化】如果是多核cpu,楼主可以做一些合理配置 。
- vivoX27Pro这款手机值得买么
- 安全舒适又具有智能性的好座椅现在市面上有吗,求推荐
- 有没有投资少三四万做的店铺生意
- 请各位老师帮我鉴定一下这枚铜钱,有没有价值
- DNF首席财务官亲口承诺,“2020年上半年,DNF手游公测”,如何评价
- 男朋友在高铁上加了妹子微信,我让他删除,过分吗
- 你为爸妈做的第一顿饭你还记得么做了什么
- 保姆有没有找工作的平台软件
- 为什么年轻人懂的,都理所当然地认为父母也该懂
