7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

EC2 (AWS ElasticBeanstalk) へのデプロイ時に npm installで失敗した時のメモ

Posted at

AWS EBのEC2への突然のデプロイ失敗

開発用の環境を AWS ElasticBeanstalkでEC2(t2.micro)でやってたのですが、ある時からデプロイが失敗続きになってしまってました。

原因を探る

EBへのデプロイ時の挙動は、 /var/log/eb-activity.log で確認します。
失敗してるところを探しましょう。

[2016-07-02T03:22:47.996Z] INFO  [9470]  - [Application /AppDeployStage0/AppDeployPreHook/06_npm_install.sh] : Activity execution failed, because: ++ /opt/elasticbeanstalk/bin/get-config container -k app_staging_dir

(略)

  > node-sass@3.8.0 install /var/app/ondeck/node_modules/node-sass
  > node scripts/install.js


   (Executor::NonZeroExitStatus)


[2016-07-02T03:22:48.000Z] INFO  [9470]  - [Application /AppDeployStage0/AppDeployPreHook/06_npm_install.sh] : Activity failed.

こんな感じのログが出ます。
これはnpm install用の自作のデプロイフックの処理です。

NonZeroExitStatusと書いてあるので、ここで何らかの異常処理が行われてるっぽいという事は分かります。
このエラー内容だと何が原因かいまいち分からないのですが、OOM Killer(メモリ不足)な疑いが。

スワップ領域の確保

t2.microなのでメモリが1Gしかありません。
スワップ領域を1G増やしてみます。

まず現状の確認

$ grep Mem /proc/meminfo 
MemTotal:        1019336 kB
MemFree:          568256 kB
MemAvailable:     598736 kB
$ grep Swap /proc/meminfo 
SwapCached:            0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
$ free
             total       used       free     shared    buffers     cached
Mem:       1019336     451064     568272         80      23544      95392
-/+ buffers/cache:     332128     687208
Swap:            0          0          0
$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/xvda1       7.8G  4.0G  3.7G   52% /
devtmpfs         490M   56K  490M    1% /dev
tmpfs            498M     0  498M    0% /dev/shm

スワップ領域確保

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 14.0276 秒、 76.5 MB/秒
$ sudo mkswap /swapfile 
スワップ空間バージョン1を設定します、サイズ = 1048572 KiB
ラベルはありません, UUID=274ae598-42ab-41e0-b229-bb0a2ccb6c09
$ sudo swapon /swapfile 
swapon: /swapfile: 安全でない権限 0644 を持ちます。 0600 がお勧めです。
$ sudo chmod 600 /swapfile 
$ ls -l /swapfile 
-rw------- 1 root root 1073741824  7月  2 03:36 /swapfile

確認

$ grep Swap /proc/meminfo 
SwapCached:            0 kB
SwapTotal:       1048572 kB
SwapFree:        1048572 kB
$ free
             total       used       free     shared    buffers     cached
Mem:       1019336     956532      62804         80      20928     602920
-/+ buffers/cache:     332684     686652
Swap:      1048572          0    1048572
$ df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/xvda1       7.8G  5.0G  2.7G   65% /
devtmpfs         490M   56K  490M    1% /dev
tmpfs            498M     0  498M    0% /dev/shm

スワップ領域の確保は色んな所にやり方が載ってますので、詳しくはググッてみてください。

デプロイ成功

これでスワップ領域を確保してからデプロイしたら、うまく行きました。
Railsのasset precompileが同様にメモリ不足になるのは何度も経験あるんですが、npm installもメモリ食うんですね。
良かったら試してみてください。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?