簡體   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