Ruby
Ubuntu

Ubuntu でスワップファイルを追加する方法 - Killed とか (x _ x)ひえー

More than 3 years have passed since last update.


同情するならサーバーをおくれ

お金も無くサーバーを借りるのも一苦労な日々を送っております。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