nodejs,密集计算会飙高cpu,那么有没有什么方案可以尽可能的优化

密集计算会彪高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,楼主可以做一些合理配置 。