您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
nodejs,密集计算会飙高cpu,那么有没有什么方案可以尽可能的优化?
多核,设备,密集nodejs,密集计算会飙高cpu,那么有没有什么方案可以尽可能的优化?
发布时间:2020-12-06加入收藏来源:互联网点击:
nodejs,密集计算会飙高cpu,那么有没有什么方案可以尽可能的优化?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
密集计算会彪高cpu,这种情况是正常的。相当于你拿很重的东西必须要这么大的力气才拿得起。
优化:
分析代码确保没有空耗cpu的无用代码,比如无限循环等。
通过一些算法进行优化,比如一些空间换时间的算法。
并行计算(因为nodejs不能直接操作线程,可以使用child_process多进程模式利用多核运算)。
如果优化代码不能实现预想的效果,可以考虑c++这种运行效率比v8更高的实现,通过node-gyp编译为原生模块。
nodejs对于cpu密集计算可怕之处是堵塞eventloop,导致后续任务无法执行,无法发挥并发优势,对于一个处理请求的服务器是致命的。解决这个问题可以使用child_process创建子进程,或者换计算能力更强的机器提供微服务。
回答于 2019-09-11 08:43:50
我们碰到过ngnix的类似情况,可能有参考意义。
该服务器提供设备固件上传功能,用户可以通过设备的网页前端上传设备固件,以后后端程序将固件升级到设备。
设备的固件大概有100多M大小,我们在ngnix服务端编写LUA脚本接受前端网页提交的数据包。
在整个接受过程中CPU的占用率高达100%,设备整体反应变慢,甚至偶尔崩溃重启。
后来我们研究了ngnix相关配置,没有找到相关的配置,甚至交叉编译了相关的模块,也只能配置下载的负荷。
后天我们修改LUA脚本,在收到一个数据包处理之后,sleep毫秒级时间,整个上传数率稍有下降,但是cpu利用率下降到了40%左右,系统稳定性大大增加。
我想node.js应该也是类似原因,楼主也可以用这种思路,在做一段时间运算以后,sleep一段时间,释放资源给系统。
如果是多核cpu,楼主可以做一些合理配置。
回答于 2019-09-11 08:43:50
密集计算的逻辑直接用c++写
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |