【发布时间】:2020-12-02 09:58:47
【问题描述】:
不知道怎么问。我编写了一个在我的计算机上运行的 nodejs 脚本,它调用了一些 CPU 密集型进程(sox 和 ffmpeg)以及其中的许多进程。直到某一点为止一切都很好,但是一旦它变得太重,事情就会开始崩溃。
我想知道如何改进这样的事情?我是初学者,但我尝试了一些东西。我曾尝试使用setTimeouts,但我不确定这是否真的有帮助,或者它是否只是在我的脚本之上增加了更多的工作。我也尝试过在 nodejs 中搜索有关去抖动/节流的内容,但我只找到与 API 请求相关的内容。
【问题讨论】:
-
你知道减速的原因吗?在 Unix 系统上,尝试
top。这可能是过多的进程切换,但只有当您的进程比 CPU 内核多得多(数百或数千个进程)时,这才会成为问题。这将通过top中的高负载来表示。它也可能是内存压力,导致交换。您可以在top中将其识别为较高的wa百分比(wa= I/O 等待,这通常表示交换)。 -
非常感谢。我在 for 循环中启动了数百个进程(实际上是 sox/ffmpeg 终端命令),所以可能就是这样。我需要在哪里输入
top或者它到底是什么?抱歉,不知道要查找什么:) -
top是 Unix 系统上的命令行程序(在任何 Linux 上可用,也可能在 macOS 上可用),它显示正在运行的进程以及它们的 CPU 使用率和内存使用率。您可以通过键入top并按 Enter 从终端运行它。您可以使用Shift+M按内存使用情况排序,然后使用q键退出。
标签: javascript node.js cpu throttling sox