簡體   English   中英

運行Node.js(在Windows R2服務器上):如何減少艱苦的任務消耗的RAM數量?

[英]Running Node.js (on Windows R2 server): How can I reduce the amount of RAM that my grunt tasks consume?

我有2種環境:一種是苛刻的環境,它處理每周的過程並將其推送到實時生產數據庫中。 另一個是帶有生產數據庫的實時應用程序本身。

我最近在Grunt中進行了一些優化,以更好的方式處理和存儲數據,從而實現了更快的應用程序和更好的整體UX。 我的問題是,在每周生產期間進行的處理占用大量內存,大約需要10個小時。 我認為可以花10個小時,但是我的問題是內存使用率高達95%,並且實時應用的響應時間開始爬升,直到咕unt聲完成為止幾乎沒有響應。

我的問題是...不添加額外的RAM(現在為8GB),如何使Grunt在不影響實時應用程序用戶體驗的情況下運行此過程? 感謝您提供的任何建議。

我認為這里的“正確”答案是使用另一台計算機。 出於這個確切的原因,您不應該在為生產網站提供服務的同一台機器上運行批量處理任務-它們傾向於消耗所有可用資源,而沒有資源留給您的Web服務器。


如果出於某種原因而不選擇另一台計算機,那么您需要診斷為什么批量任務占用了如此多的內存。 node-inspectormemwatch是良好的起點。 這些將使您可以檢查JavaScript堆以查看內存中的內容。

但是,JS堆通常限制在1到1.9 GB之間(取決於節點版本),因此,如果您的批量任務正在使用更多的內存,則有幾種可能性:

  1. 涉及多個節點子進程。
  2. 您的節點進程正在JS堆之外分配大量內存。 這通常意味着您有很多(和/或一些非常大的) Buffer沒有被處置。
  3. 您可能正在使用泄漏內存的本機(C ++)模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM