私は現在ec2マイクロインスタンスを実行しています、そして、私はインスタンスが時折メモリを使い果たしているのを発見しました。
より大きいインスタンスサイズを使用する以外に、他に何ができるでしょうか。
この問題を解決するには、インスタンスにswap
(つまりpaging
)スペースを追加します。
ページングは、ハードドライブ上に領域を作成し、それを追加のメモリとして使用することで機能します。このメモリは通常のメモリよりはるかに低速ですが、もっと多くのメモリを使用できます。
このスペースをインスタンスに追加するには、次のように入力します。
Sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
Sudo /sbin/mkswap /var/swap.1
Sudo chmod 600 /var/swap.1
Sudo /sbin/swapon /var/swap.1
あなたが1024以上を必要とするならば、それからそれをより高い何かに変更してください。
再起動後にデフォルトで有効にするには、この行を/ etc/fstabに追加します。
/var/swap.1 swap swap defaults 0 0
スワップは、EBSデバイスではなく、Instance Storage(ephemeral)ディスク上で行う必要があります。交換するとIOが多く発生し、EBSのコストが増加します。 EBSはInstance Storeよりも遅く、Instance Storeには 特定のタイプのEC2インスタンス が付いてきます。
通常/ mntにマウントされますが、実行されない場合
Sudo mount /dev/xvda2 /mnt
その後、このデバイス上にスワップファイルを作成するには、4GBのスワップファイルに対して以下の手順を実行します。
Sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=4096
他のユーザーがスワップファイルを閲覧できないようにする
Sudo chown root:root /mnt/swapfile
Sudo chmod 600 /mnt/swapfile
スワップとしてメークアンドフラッグ
Sudo mkswap /mnt/swapfile
Sudo swapon /mnt/swapfile
以下を/ etc/fstabに追加/確認します。
/dev/xvda2 /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
/mnt/swapfile swap swap defaults 0 0
最後にスワップを有効にする
Sudo swapon -a
Ajtrichardsによって言及されたステップを適用した後、あなたはあなたのAmazonフリーティアインスタンスがこのコマンドを使ってスワップを使っているかどうかをチェックすることができます
cat /proc/meminfo
結果:
ubuntu@ip-172-31-24-245:/$ cat /proc/meminfo
MemTotal: 604340 kB
MemFree: 8524 kB
Buffers: 3380 kB
Cached: 398316 kB
SwapCached: 0 kB
Active: 165476 kB
Inactive: 384556 kB
Active(anon): 141344 kB
Inactive(anon): 7248 kB
Active(file): 24132 kB
Inactive(file): 377308 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal:1048572 kB
SwapFree:1048572 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 148368 kB
Mapped: 14304 kB
Shmem: 256 kB
Slab: 26392 kB
SReclaimable: 18648 kB
SUnreclaim: 7744 kB
KernelStack: 736 kB
PageTables: 5060 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1350740 kB
Committed_AS: 623908 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7420 kB
VmallocChunk: 34359728748 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 637952 kB
DirectMap2M: 0 kB
これらのコマンドを使用して、インスタンスに1 GBのスワップを追加できます。
Sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
Sudo mkswap /swapfile
Sudo swapon /swapfile
再起動後にデフォルトで有効にするには、この行を/etc/fstab
に追加します。
/swapfile swap swap defaults 0 0
t2
インスタンス(t2.micro
、t2.medium
、t2.small
)を使用している場合は、使用可能な一時記憶域またはインスタンス記憶域はありません。そのため、あなたはあなたのスワップをEBS
に作成する必要があります。それ以外の場合は、@ Davidの回答に従い、EBSコストの支払いを回避するために一時ストレージにスワップを作成します。
より多くの情報: http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html いくらかを示す表があります各インスタンスタイプの一時ストレージ。
以下の手順でスワップスペースを作成できます。ここでは/home/
にスワップを作成します。
dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
ここでのカウントはスワップスペースのキロバイト数です
mkswap /home/swapfile1
vi /etc/fstab
入力してください:/home/swapfile1 swap swap defaults 0 0
実行します。swapon -a
どのサーバーにもスワップスペースを追加できます
ddコマンドを使ってファイルを作成する
#dd if=/dev/zero of=/swapfile bs=1M count=2048
or
#dd if=/dev/zero of=/swapfile bs=1024M count=2
bsはブロックサイズで、countはサイズをMBまたはGBで表したものです
その逆も使えます
作成後にファイルの権限を変更します。
#chmod 600 /swapfile
それからファイルを交換します。
#mkswap /swapfile
次にswaponコマンドでスワップファイルを有効にします。
#swapon /swapfile
スワップが有効かどうかをfreeコマンドで確認します。
#free -h
#swapon -s
スワップスペースhttp://pqxx.org/development/swapspace/ を試してください。
ほとんどのディストリビューションはそれをパッケージ化しています。
EC2では、 "swappath"を/ mntまたはhigh-iopsディスクに変更することをお勧めします。
DavidのInstance Storageを使っても(m5d.2xlargeで)最初はうまくいきましたが、EC2インスタンスを停止して再びオンにした後、インスタンスに再びsshすることができませんでした。
インスタンスログに、「緊急モードに入っています。ログイン後、システムログを表示するには「journalctl -xb」、再起動するには「systemctl reboot」、デフォルトモードに起動するには「systemctl default」または「exit」と入力します。メンテナンスのために"
代わりにこのリンクのAWSの指示に従ったところ、インスタンスの電源を入れ直した後も含め、すべてが完璧に機能しました。
https://aws.Amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/
Sudo dd if=/dev/zero of=/swapfile bs=1G count=4
Sudo chmod 600 /swapfile
Sudo mkswap /swapfile
Sudo swapon /swapfile
Sudo swapon -s
Sudo vi /etc/fstab
/swapfile swap swap defaults 0 0