2

我有一个用 nodejs 制作的 beanstalkapp 工作程序,它的作用是有一个 PHP 应用程序可以完成所有站点工作,如果有错误、问题或通知,或者它会将它添加到 beanstalkapp 中。然后,nodejs 需要经常运行,检查 beanstalkapp 是否有任何消息,并对它们做一些事情(给某人发电子邮件,将其添加到日志中,在某处发布)。

我的问题是,这种糟糕的表现是明智的还是有更好的方法来做到这一点?我会假设 setInterval 不会让进程结束,因此会很糟糕?

4

1 回答 1

9

这取决于你的setInterval时间。javascript 解释器在事件之间休眠。因此,在这之间,setInterval您的 node.js 应用程序消耗零(或几乎零)CPU 时间。

因此,应用程序在整个系统上产生的负载量取决于setInterval触发频率。每秒一次几乎不会消耗任何 CPU。另一方面,每 1 毫秒一次(以 1 或 0 的 setInterval 时间调用)可能会使您的系统陷入瘫痪,尤其是当您在资源受限的机器或 VM 上运行时。

根据我的经验,一个好的折衷方案是大约 50 或 100 毫秒(每秒 20 或 10 次)。即使是实时应用(因为人类感知比 20Hz 慢很多),它的响应速度也足够快,并且足够长,对系统的其余部分几乎没有影响。

于 2012-10-10T01:44:14.197 回答