現: 2018-01-11 (木) 10:03:04 takatsuka[3] [4] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | EC2 では t2 シリーズを選択するケースがけっこう多い気がします。 | ||
+ | 開発用途の場合はきっとそうなるだろうし、本番用途でもそこそこの規模なら t2 で十分って判断もありそうです。 | ||
+ | |||
+ | が、t2 シリーズで Amazon Linux を構築してみると、デフォルトではスワップが存在してないハズです(よね?きっと)。 | ||
+ | |||
+ | スワップを常用しちゃうような負荷ならもっとスペックを上げるべきだと思いますが、そうじゃなくてもスワップがナシっていうのはかなり不安です。 | ||
+ | |||
+ | というわけで、OS 起動時にスワップ領域を作るスクリプトです。 | ||
+ | |||
+ | ネット上に色々出てた情報を参考にしています。感謝です。 | ||
+ | |||
+ | # vi /etc/rc.local | ||
+ | |||
+ | ↓以下を追記(コメントに日本語が入っているので文字コードに注意すべし) | ||
+ | #prettify{{ | ||
+ | # enable swap ##################### | ||
+ | |||
+ | # スワップファイル名 | ||
+ | SWAPFILENAME=/swap.img | ||
+ | |||
+ | # 既存のファイルを削除 | ||
+ | rm $SWAPFILENAME | ||
+ | |||
+ | |||
+ | # 搭載メモリ(KB)取得 | ||
+ | MEMSIZE=`cat /proc/meminfo | grep MemTotal | awk '{print $2}'` | ||
+ | |||
+ | # メモリ量に応じてスワップサイズを算出 | ||
+ | if [ $MEMSIZE -lt 2097152 ]; then | ||
+ | SIZE=$((MEMSIZE * 2)) | ||
+ | elif [ $MEMSIZE -lt 8388608 ]; then | ||
+ | SIZE=${MEMSIZE} | ||
+ | else | ||
+ | SIZE=8388608 | ||
+ | fi | ||
+ | #echo $SIZE | ||
+ | |||
+ | # 空き容量(KB)を取得 | ||
+ | AVAILABLE=`/bin/df / | /usr/bin/tail -1 | /bin/sed -r 's/^\S+\s+\w+\s+\w+\s+(\w+)\s+\S+*%\s+\/$/\1/'` | ||
+ | #echo $AVAILABLE | ||
+ | |||
+ | # スワップが大き過ぎないよう調整(1Gは空けとくようにする) | ||
+ | if [ $SIZE -gt $((AVAILABLE - 1048576)) ]; then | ||
+ | SIZE=$((AVAILABLE - 1048576)) | ||
+ | fi | ||
+ | |||
+ | # 小さ過ぎるようなら作らない | ||
+ | if [ $SIZE -gt 10000 ]; then | ||
+ | fallocate -l ${SIZE}k $SWAPFILENAME && mkswap $SWAPFILENAME && swapon $SWAPFILENAME | ||
+ | fi | ||
+ | }} | ||
+ | |||
+ | |||
+ | - 環境によってサイズを調整するようになっています。吊るしの状態で色々な環境に使えるようしてみました。が、固定であるほうが望ましいような場合には適宜変更してください。 | ||
+ | |||
+ | - dd ではなく fallocate を使うことで、ストレージアクセスを最小限にして、無駄に課金されないよう考慮しています。 |
(This host) = https://thinkridge.com