繁体   English   中英

后请求中设置setInterval不利于服务器性能-ExpressJS

[英]is setInterval in post request bad for server performance - expressjs

当用户向我的Express服务器发出发布请求时,我设置了一个时间间隔来轮询用户的Spotify帐户以获取播放信息。

app.post('/party', _ensureAuthenticated, function(request, response) {
  const token = decrypt(request.user.encryptedAccessToken);
  setInterval( () => {
    pollSpotify(token)
  }, pollInterval);
});

我的问题是,如果多个用户向不同的帐户发出此发帖请求,并在快速服务器上设置了许多间隔,这会降低我的服务器性能吗? 我该如何清除这些时间间隔? 从我的快递服务器轮询Spotify的更好方法是什么?

这会降低我的服务器性能吗?

是的,建立越来越多的setInterval()计时器最终将影响服务器性能。 它对服务器的影响取决于您的pollInterval是什么,每个间隔必须执行多少处理以及您有多少个计时器。

并且,由于您无法永远停止使用其中一个计时器,因此即使用户离开您的网站几天后,它们也将永远堆积。 而且,您甚至会获得给定用户的重复信息,因为他们多次访问/party

为了建议一个更好的设计,我必须了解您在pollSpotify(token)正在做什么,以及您在那里发现的结果在做什么。

至少,您需要知道用户何时不在您的站点上的能力,以便您可以停止为他们运行的计时器并防止给定用户重复。

如果您只有一个轮询计时器来运行所有轮询,并且它代表处于活动状态的用户/令牌阵列中的每个项目进行检查,则它将具有更大的可伸缩性。 然后,您可以根据用户请求从阵列中添加/删除数组中的项,或者将其超时以不活动状态进行。

并且,当然,您需要知道用户何时不再在您的站点上处于活动状态,以便您可以代表他们停止轮询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM