NodeJS setInterval对性能有害吗?

时间:2012-10-10 01:15:25

标签: php performance node.js beanstalkd

我有一个使用nodejs构建的beanstalkapp工作程序它的作用是有一个PHP应用程序可以处理所有站点内容,如果有错误或问题或通知或者它将它添加到beanstalkapp中。然后,nodejs需要经常运行检查beanstalkapp以查找任何消息并对它们执行某些操作(通过电子邮件发送给某人,将其添加到日志中,发布到某处)。

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

1 个答案:

答案 0 :(得分:8)

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

因此,应用程序在系统上产生的负载总量取决于setInterval发生的频率。每秒一次几乎不会占用任何CPU。另一方面,每1ms(使用setInterval时间为1或0调用)可能会使系统陷入困境,尤其是在资源受限的计算机或VM上运行时。

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