同情するならサーバーをおくれ
お金も無くサーバーを借りるのも一苦労な日々を送っております。RubyなんてVMだけで50MBとかかかるから、512MBの借りてるサーバーだともう大変なんです。Apacheとかも動かしているからメモリが無いんです。四畳半でつつましく暮らしている感じです。
Amazon さんとかサーバー無料チケットとかくれないかなー |ω・`)チラ
動画をディプラして楽しめる仕組みが出来上がったら使わせてあげるから、AWSの無料クーポン1年分とかくれないかなー |ω・)チラ |ω・
)チラ
Ubuntu はスワップが割り当てられて無いの
Rubyにするなよって言われそうなんですが、みんながつくったライブラリーとかそういうエコシステム的なものを活用させていただけることがありがたくて、ほんとみんなありがとう。
つくった処理をcronでまわしてたら、途中で止まってて、コマンドラインで実行したら途中で
Killed
って、
(x _ x)ひえー
これはOOM Killerというやつですか?良く知らないのですが。殺されちゃったんです。
$ top
したら、swap がゼロになってて、メモリも ruby が 30% とか取っててそれが二つとかあって、もうカツカツだったんです。で、念のためプロセスも確認すると
$ ps -elf | grep ruby
どう見ても、わたしの書いたスクリプトがばっちりメモリ使ってるんです。とにかくメモリを何とかしなきゃ(増やすという結論はありません)なので
GC.start
とか入れて、CPUの負担増やしてもメモリを無理やり解放しようと試みるも、最近のがーべっじコレクターなんてわたしより賢いんだから、効果なんて無いんです。CPU使用率が無駄に30%とか上がっただけでした。
Ubuntu でスワップファイルを追加しよう
スワップファイルつくろうということで、ググってみたらありましたありました。まずは
スワップ状態の確認
$ sudo cat /proc/swaps
スワップファイル作成
$ sudo mkdir /var/swap/
$ sudo dd if=/dev/zero of=/var/swap/swap0 bs=2M count=2048
$ sudo chmod 600 /var/swap/swap
2Mのブロックサイズのものを2048個つくるよ。借りてるサーバーのディスクが20GBしかなくて、最初間違えて 2M x 4096 って作りすぎてひえーってなりました。ディスクサイズを考えてスワップサイズは計画的にね。
スワップファイルをスワップに割り当て
sudo mkswap /var/swap/swap0
sudo swapon /var/swap/swap0
起動時にスワップファイルとして設定されるようにする
$ sudo vi /etc/fstab
/var/swap/swap0 swap swap defaults 0 0
↑を最終行に追加
参考サイト
Ubuntu スワップファイルの追加方法 - http://goo.gl/DyIkA3