nodeのメモリー足らない問題をswapで回避する
webpackerを使用していると、普通にdeployで落ちてしまいます。
FATAL ERROR: JS Allocation failed - process out of memory Aborted
こんな感じのエラーが出てにっちもさっちもいかなかったです。
memoryが足らないと言うことで、memoryを増やせばいいのですが、無料期間なので、グレードをあげて対処するなんてもったいないです。
どうしよう・・・っと思っていたところに、swap領域を作れば回避できるんじゃないですか?とアドバイスをいただいたので、swap領域を作成することにした。
AWSの上位インスタンスだと、最初からswapはあるようだけど、安いインスタンスだとなかった。
あと、inuxだと、swap領域を自分で設定できたとは知らなかった。
swapとは
HDDにメモリー領域を作成して、高速にアクセスできるようにします。 パソコンはメモリー上にある領域は高速にアクセスできるのですが、HDDに書き込みするのは遅いです。 ということで、memoryが足らない状態になると、HDDにメモリー領域を作成します。
今回は実際のメモリー上のアクセスしかしていなくて、メモリー領域が足らなくて落ちていました。
コマンド
sudo dd if=/dev/zero of=/swap bs=1M count=1024 sudo mkswap /swap sudo swapon /swap
んで、freeコマンドで確認する。
Mem: 1022936 831780 191156 1592 80336 183480 -/+ buffers/cache: 567964 454972 Swap: 1048572 10064 1038508
無事にできている。
topコマンドでもきちんと作成されています。
top - 21:06:59 up 1 day, 21:51, 1 user, load average: 0.00, 0.05, 0.14 Tasks: 64 total, 1 running, 63 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.7 us, 0.1 sy, 0.0 ni, 98.3 id, 0.9 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 1022936 total, 832076 used, 190860 free, 80336 buffers KiB Swap: 1048572 total, 10064 used, 1038508 free. 183504 cached Mem
きちんとコンピューターの仕組みがわかれば大した問題じゃないのですが、解決できてよかった。
意外にサーバー面白い!