EC2でいくつかのサーバーを起動しましたが、それらにはスワップがありません。
私は何か間違ったことをしていますか、それともマシンにまったく何もないということですか?
そうです、Ubuntu EC2 EBSイメージには、スワップ領域が構成されていません(少なくとも 11.04 の場合)。 「通常の」インスタンスタイプのイメージにはスワップパーティションがありますが、私がテストしたものでは896 MBしかありません。
一部のプロセスが爆発し、スワップスペースがない場合、サーバーはOOMキラーが作動する前にしばらくの間クロールが停止する可能性がありますが、スワップでは単に遅くなるだけです。そのため、十分なRAMがあっても、常にスワップ領域を確保したいと思っています。オプションは次のとおりです。
EBSボリューム(RAMのサイズの2〜4倍)を作成し、インスタンスにアタッチします(「メモリ」の場合は/ dev/xvdmと呼びます)、Sudo mkswap /dev/xvdm
、fstabに追加、Sudo swapon -a
、そしてあなたは行ってもいいです。以前にこれを実行したことがあり、正常に動作しますが、ネットワークを経由するため、インスタンスストアよりも少し遅いでしょう。
または、新しいAMIを作成する必要がある場合でも、ディスクを再パーティション化してスワップパーティションを追加できる場合があります。ルートファイルシステムをマウント解除できず、ディスクデバイス(/ dev/xvda)にはアクセスできず、パーティション(xvda1)にしかアクセスできないため、実行中のインスタンスではこれを行うことができませんでした。
または、スワップファイルを作成できます。これは今のところ私の推奨ソリューションです。
Sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048 &&
Sudo chmod 600 /var/swapfile &&
Sudo mkswap /var/swapfile &&
echo /var/swapfile none swap defaults 0 0 | Sudo tee -a /etc/fstab &&
Sudo swapon -a
できました。 :)私は多くの人がパーティションの代わりにファイルを使用することに不快に感じることを知っていますが、それは確かに緊急スワップスペースとして十分に機能します。
スワップIMHOに最適な場所は、インスタンスストアです。どうして? AWSはインスタンスストアでのi/oの料金を請求しません。さらに、多くの場合、インスタンスストアはEBSよりもパフォーマンスが優れています。インスタンスを停止した場合に備えて、スワップファイルを再作成するスクリプトがあることを確認してください。再起動は問題ありません。 なぜデフォルトで存在しないのですか?
インスタンスストアを見つけましょう。
root@domU-**-**-**-**-**-**:/var/log# fdisk -l
[...]
Disk /dev/xvda2: 160.1 GB, 160104972288 bytes
255 heads, 63 sectors/track, 19464 cylinders, total 312705024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/xvda2 doesn't contain a valid partition table
万歳、160.1GB無料!そこにスワップを入れて、EBSベースのスワップが誤って群がった場合、サーバーあたり100ドルの超過を忘れてください。ここで話している不幸な経験。
どうやら、場合によっては、インスタンスストアが表示されないことがあります。
インスタンスタイプに応じて、最初にblock-device-mappingオプションを使用してインスタンスストアボリュームをインスタンスに接続する必要があります。これを行わないと、/ devの下にデバイスが表示されない場合もあります( に従ってAmazon EC2で「インスタンスストアボリューム」ストレージを使用する方法 )
注:Amazonが 価格を変更しましたポリシー 、および2016年半ば以降のI/Oリクエストに対しては課金されません。歴史的な理由で答えはここに保持されていますが、EC2 EBS-backedインスタンスでスワップを使用する(または使用しない)ことによるコストへの影響はありません。
これは仕様によるものです。予測できないコストを回避するために、EC2 EBS-backedインスタンスではスワップがデフォルトでオフになっています。
不正な(たとえば、小さなインスタンスまたは小さなインスタンスで)メモリを大量に消費するアプリがある場合、EBSボリュームでかなり大量のI/Oリクエストを生成する可能性があります。 Amazonは100万のI/Oリクエストごとに0.10ドルを請求します( http://aws.Amazon.com/pricing/ebs/ を参照)。
通常の状態では、心配する必要はありません。通常、小規模なインスタンスでもI/O要求のコストは数ドルです。したがって、適切なサイズのインスタンスがあり、そのスワップがまれにしか使用されないことがわかっている場合は、先に進んで有効にしてください。ただし、小さなインスタンスには注意してください。
スワップを有効にする場合は、使用状況レポートを監視する必要があります。必要に応じて、 CloudWatchコントロールパネル に移動し、合計請求額の新しいアラームを作成して、請求アラートを設定することもできます。この方法ですぐに通知が届くのは、インスタンスで奇妙なことが起こっているためです。
/etc/fstab
ファイル。おそらく、使用しているイメージにスワップなしでセットアップされています。総メモリ以上のメモリを使用することは決してないので、サーバーをスワップせずに実行している人もいると思います。スワップするとすべてが非常に遅くなります。
ただし、私は常にメモリ内でいくつかのプロセスが膨れ上がることに偏執的であるため、単純にスワップドライブをセットアップして、実行中のec2インスタンスからイメージを再作成するのが賢明だと思います。