LinuxでRAMディスクを使い超軽量な処理を実現する

スポンサーリンク
Linux
スポンサーリンク
↑管理人が個人でUnity+Live2Dで作成しているスマホゲームです

アクセスが激しいサイトを運営していると、Webサーバの処理だけでも大きな負荷がかかります。
しかしさらにそのサーバ上で大きなファイルのアップロードや処理(超解像度の画像処理や大きなzipのアップロードと解凍など)も同時に行っていたら、どうしてもHDDアクセスが追いつかずIOWAITが非常に大きくなってしまいます。
IOWAITが大きくなるとHDDアクセスを行うプロセスのCPU時間が大きくなってしまいサーバ全体が不安定になりダウンに繋がります。
そんな時にメモリの一部を使ってRAMディスクという仮想ディスクを作り、そこでコンテンツ処理をしてしまえばIOWAITを一気に下げる事が可能です。
以下に手順を書きます(/dev/shmは既にアンマウントされている前提です)。

mkdir /var/tmp/ram
mount -t tmpfs -o size=10G /dev/shm /var/tmp/ram

これで/var/tmp/ramに10GBの仮想ディスクができました。
忘れずに/etc/fstabにも

/dev/shm     /var/tmp/ram   tmpfs   defaults,size=10G        0   0

と追加しておきます。

ワーキングディレクトリを必要なだけその下に作っていきますが、このディレクトリはマシン再起動で削除されてしまうので、/etc/rc.localにもmkdirその他必要なコマンドを記述しておきます。
そして、ファイルをアップロードする時にはまずRAMディスクにアップロードするようにし、それからRAMディスク上でファイルを処理し、最後に処理結果ファイルをHDDに移動するような処理を書きます。
こうすることで、RAMディスクへの書き込みが速いのでファイルのアップロード自体も高速になりますし、アップロードと処理がHDDに対して負荷を高める事もなくなります。最後のHDDへのファイル移動は圧倒的に高速でIOWAITをほぼ高めません。
Webサーバは裏での処理に関係なく安定し、結果としてユーザからのアクセスにも素早く応答する事ができます。

1 Star2 Stars3 Stars4 Stars5 Stars (まだ投票されていません)
読み込み中...

コメント

  1. […] ても一ヶ月以内に壊れる!重そうなPHPスケジューリング処理にRAMディスク(参考:http://patio.work/archives/1421)を使っても状況が変わらない!といった現象が起こる事があります。まず、iosta […]

広告ブロッカーを無効にしてください。

タイトルとURLをコピーしました