読者です 読者をやめる 読者になる 読者になる

ARCHIVESDRIVE HB

オイラはホームベーカリー!

passengerのインストールで例外が出た

ansibleのテストしてたら出てきてなんじゃいなって感じでした。

/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/backward/backward_warning.h:28:2: 警告: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated.
c++: 内部エラー: 強制終了 (プログラム cc1plus)
完全なバグレポートを送ってください。
<http://bugzilla.redhat.com/bugzilla> に手順が書いてあります。
rake aborted!
Command failed with status (1): [c++ -o buildout/support-binaries/CoreMain.o  -Isrc/agent -Isrc/cxx_supportlib -Isrc/cxx_supportlib/vendor-copy -Isrc/cxx_supportlib/vendor-modified -Isrc/cxx_supportlib/vendor-modified/libev -Isrc/cxx_supportlib/vendor-copy/libuv/include -D_REENTRANT -I/usr/local/include -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-long-long -Wno-missing-field-initializers -feliminate-unused-debug-symbols -feliminate-unused-debug-types -fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED -Wno-attributes -ggdb -DHAS_ALLOCA_H -DHAVE_ACCEPT4 -DHAS_SFENCE -DHAS_LFENCE -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -DHASH_NAMESPACE="__gnu_cxx" -DHASH_MAP_HEADER="<hash_map>" -DHASH_MAP_CLASS="hash_map" -DHASH_FUN_H="<hash_fun.h>" -c src/agent/Core/CoreMain.cpp]

Tasks: TOP => apache2 => buildout/support-binaries/PassengerAgent => buildout/support-binaries/CoreMain.o
(See full trace by running task with --trace)

--------------------------------------------

It looks like something went wrong

メモリが足りない

[root@centos-512mb ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           490         73        417          0          1         21
-/+ buffers/cache:         49        440
Swap:            0          0          0

digitaloceanのRAM512Mbyteな環境に向かってpassenger-install-apache2-module実行すると再現するので、サーバ上でdmesg確認してOOMkillerさんにプロセス停止させられていると判明した次第。

[22651]     0 22651    47354     3362   0       0             0 passenger-insta
[23233]     0 23233    38205     3443   0       0             0 ruby
[23765]     0 23765    25309      225   0       0             0 c++
[23766]     0 23766   132772   102855   0       0             0 cc1plus
Out of memory: Kill process 23766 (cc1plus) score 791 or sacrifice child
Killed process 23766, UID 0, (cc1plus) total-vm:531088kB, anon-rss:405516kB, file-rss:5904kB

swapを作る

足りなきゃ持ってくりゃいいんやで、ってことでswapを作ります。

[root@centos-512mb ~]# dd if=/dev/zero of=/tmp/swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.89889 s, 219 MB/s
[root@centos-512mb ~]# chmod 600 /tmp/swapfile
[root@centos-512mb ~]# mkswap /tmp/swapfile
mkswap: /tmp/swapfile: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
スワップ空間バージョン1を設定します、サイズ = 1048572 KiB
ラベルはありません, UUID=277ad9de-7715-486b-bafd-39eccb676505
[root@centos-512mb ~]# swapon /tmp/swapfile

できました、確認してみましょう!

[root@centos-512mb ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           490        484          6          0          0        420
-/+ buffers/cache:         62        428
Swap:         1023          0       1023

増えていますね。これでOOMkillerも早々呼ばれません。

ちなみに

これ対策していないので、ホスト再起動するとswapが消えますのでご注意を。