EC2でいくつかのサーバーを起動しましたが、それらにはスワップがありません。
私は何か間違ったことをしているのですか、それともマシンに何もないのですか?
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で「Instance Store Volumes」ストレージを使用する方法に従って?)
注: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コントロールパネルに移動し、合計請求額の新しいアラームを作成して、請求アラートを設定することもできます。この方法ですぐに通知されますが、インスタンスで奇妙なことが起こっています。
実行中に簡単な解決策swap
ではEC2
イメージが実行することであるswap
と、圧縮lz4
にram
持ちますzram-init
。
このソリューションは、次のものをram
取り去りませんhost
:
zswap
に、通常のスワップファイル/ディスクの上に圧縮RAMキャッシュを提供するwiki.archlinux.org/index.php/zswapを使用できます。zramの詳細については、cnx-software.com / 2018/05/14 /…を参照してください。