我有一个beanstalkapp worker,它是用nodejs创建的,它所做的是有一个php应用程序来完成所有的站点工作,如果有错误、问题或通知,或者它将它添加到beanstalkapps中。nodejs需要经常运行,检查beanstalkapp是否有任何消息,并对它们执行一些操作(向某人发送电子邮件,将其添加到日志中,在某个地方发布)。
我的问题是,这种糟糕的表现是明智的还是有更好的方法来做到这一点?我假设setInterval不会让进程结束,因此会很糟糕?

最佳答案

这取决于你的时间。javascript解释器在事件之间休眠。因此,在setIntervals之间,node.js应用程序消耗的CPU时间为零(或几乎为零)。
因此,应用程序在整个系统上产生多少负载取决于setInterval触发的频率。每秒一次几乎不会消耗任何CPU。另一方面,每1毫秒(以1或0的设置间隔时间调用)一次可能会使系统瘫痪,特别是在资源受限的计算机或虚拟机上运行时。
以我的经验,一个好的折衷方案是大约50或100毫秒(每秒20或10次)。它对实时应用程序的响应足够快(因为人类的感知比20Hz慢得多),并且足够长,对系统的其他部分几乎没有影响。

07-28 08:09