2016-10-07 20 views
2

私はがRAMのサーバ上でNode.jsを実行しています。問題は、私がスクリプトを実行すると、メモリ不足のために殺されるということです。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を使用するスクレイパーです。それが実行されると、数百または数千のWebページが開きます(ただし並列ではありません)。

+1

そのような量のメモリをどのような種類のデータで使用しているのか、そのデータをどのように扱うのかは分かりません。 redisのようなツールは、頻繁に使用されるデータをnodejの外にキャッシュするのに役立ちます。 –

+0

あなたのメモリ消費量を減らす方法は、あなたのアプリで何をやっているのが最も多くのメモリを消費しているかによって決まります。あなたはそれを私たちと共有しないので、選択肢が何であるかを知るのは少し難しいです。おそらく、最も多くのメモリを使用しているものを理解することから始める必要があります。 – jfriend00

答えて

0

利用可能な512のすべての最後のメガバイトにノードアクセス権を与えていて、まだ十分でない場合は、

  1. プログラムのメモリ要件を減らしてください。これは可能かもしれないし、そうでないかもしれない。これに助けが必要な場合は、機能とメモリの使用方法を詳述する別の質問を投稿する必要があります。

  2. ご使用のサーバー用のメモリを増やしてください。 512mbは特に、メモリ内のストレージを必要とする他のサービス(データベースやメッセージキューなど)を実行している場合はあまり役に立ちません。

ありswapスペース(メモリのバックアップとして動作するディスク・ストレージ)を使用しての第三可能性があるが、これはパフォーマンスに強い影響を与えます。あなたがまだそれを望むなら、あなたのオペレーティングシステム用にこれを設定する方法については、そのトピックに関する記事がたくさんあります。これはノード構成ではなくOS構成です。

関連する問題