2016-11-26 65 views
-1

我正在使用以下過程在使用nodejs運行的專用服務器上執行cpu密集型任務。想知道如果這是正確的做法(步驟和方法作爲一個整體) -Nodejs,專用服務器,cpu密集任務

(注 - CPU密集型任務完成的時間並不重要,只要它只是一事無成)

  1. 創建的NodeJS網絡服務器(WS)和用於CPU密集型任務在不同的端口在同一臺機器
  2. WS上的另一個的NodeJS服務器(CPS)經由本地主機http請求
  3. CPS被阻止發送CPU密集型任務到CPS,執行每個任務順序。 WS不直接受到CPS被阻擋的影響(我假設這一點!)

問題1。由於WS發送的請求,如果CPS擁有一個持續增長的巨大隊列,會發生什麼?
問題2。這是做CPU密集型工作的糟糕方式嗎?什麼會是更好的解決方案?

回答

0

Answer1。如果CPS持續排隊請求(在非常大的請求隊列中),則應用程序的heap size將超出操作系統限制 - > CPS將被關閉,從而失去所有排入隊列的請求。想想這種情況就像是CPS上的DDOS攻擊!

Answer2。如果預計隊列變大,建議使用類似Redis Simple Messaging Queue (rsmq)的任務隊列(如kue)/消息隊列。

我在這個時候用簡單的HTTP去了,因爲我的負載並不是那麼大。我稍後可能會更新此答案(當我的服務器負載增加時)。

(某些數據源來自於Stackoverflow上的this question