2016-10-07 29 views
2

我在一臺服務器上運行Node.js,只有512MBRAM。問題是當我運行一個腳本時,它會因內存不足而死亡。由於內存不足導致Node.js死亡

默認情況下,Node.js內存限制爲512MB。所以我認爲使用--max-old-space-size是沒用的。

如下/var/log/syslog內容:

Oct 7 09:24:42 ubuntu-user kernel: [72604.230204] Out of memory: Kill process 6422 (node) score 774 or sacrifice child 
Oct 7 09:24:42 ubuntu-user kernel: [72604.230351] Killed process 6422 (node) total-vm:1575132kB, anon-rss:396268kB, file-rss:0kB 

有沒有辦法擺脫出來的內存沒有升級內存? (如使用永久存儲器作爲附加RAM)

更新: 這是一個使用節點模塊請求和cheerio的刮板。當它運行時,它將打開數百或數千個網頁(但不是並行)

+1

不知道什麼樣的數據正在使用這麼多的內存以及如何處理這些數據,這很難說清楚。像redis這樣的工具可以幫助你將經常使用的數據緩存在nodejs之外。 –

+0

您如何減少內存消耗的選項完全取決於您在應用程序中消耗的內存最多的內容。既然你不與我們分享這些信息,我們很難知道選擇是什麼。您可能需要先了解使用最多內存的內容。 – jfriend00

回答

0

如果您要讓節點訪問可用512的每個最後一兆字節,但仍然不夠,那麼有兩種方式:

  1. 降低程序的內存要求。這可能會也可能不會。如果您需要此幫助,則應該發佈另一個問題,詳細說明您的功能和內存使用情況。

  2. 爲您的服務器獲取更多內存。 512mb並不多,特別是如果您正在運行需要內存存儲的其他服務(如數據庫或消息隊列)。

有使用swap空間(充當內存備份磁盤存儲)的第3個可能性,但是這會對性能有很大的影響。如果你仍然需要它,谷歌如何爲你的操作系統設置它,關於這個話題有很多文章。這是OS配置,而不是Node的。

相關問題