現在ec2マイクロインスタンスを実行していますが、インスタンスがメモリ不足になることが時々あります。
より大きなインスタンスサイズを使用する以外に、他に何ができますか?
現在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
if
「入力ファイル」をof
意味し、「出力ファイル」をbs
意味し、「ブロックサイズ」を意味count
し、割り当てるブロックの数です。man
詳細については、コマンドのページを参照してください:linux.die.net/man/1/ DD
$> free -m
スワップは、EBSデバイスではなく、インスタンスストレージ(エフェメラル)ディスクで行う必要があります。スワッピングは大量のIOを引き起こし、EBSのコストを増加させます。EBSはインスタンスストアよりも低速であり、インスタンスストアは特定のタイプの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
スワップ合計: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
/swapfile
。ただし、別のファイルシステムをマウントして、そこにスワップファイルを作成することもできます/mnt/blah/swapfile
。
あなたが上にある場合t2
のインスタンス(t2.micro
、t2.medium
、t2.small
)、あなたに利用可能な一時的またはインスタンスストレージがありません。そのためEBS
、ユースケースに応じて適切な場合とそうでない場合があるスワップを作成する必要があります。それ以外の場合は、@ Davidの回答に従い、EBSコストの支払いを回避するために、一時ストレージにスワップを作成します。
詳細:http : //docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html各インスタンスタイプで取得できる一時ストレージの量を示す表があります。
For example, if you provision a volume with 1000 IOPS, and keep this volume for 15 days in a 30 day month, then in a Region that charges $0.10 per provisioned IOPS-month, you would be charged $50 for the IOPS that you provision ($0.10 per provisioned IOPS-month * 1000 IOPS provisioned * 15 days/30). You will be charged for the IOPS provisioned on a volume even when the volume is detached from an instance.
。AWSは読み取りと書き込みの操作に課金するようです。
どのサーバーにもスワップ領域を追加できます
ddコマンドを使用してファイルを作成する
#dd if=/dev/zero of=/swapfile bs=1M count=2048
or
#dd if=/dev/zero of=/swapfile bs=1024M count=2
bsはブロックサイズで、カウントはMBまたはGBのサイズを指します
私たちはその逆も使用できます
作成後、ファイルの権限を変更します。
#chmod 600 /swapfile
次に、ファイルをmakewapします。
#mkswap /swapfile
次に、swaponコマンドでスワップファイルを有効にします。
#swapon /swapfile
スワップが有効になっているかどうかをfreeコマンドで確認します。
#free -h
#swapon -s
Davidのインスタンスストレージを使用すると、最初は(m5d.2xlargeで)動作しましたが、EC2インスタンスを停止して再びオンにした後、インスタンスに再度SSH接続できませんでした。
次のインスタンスログが報告されました:「緊急モードです。ログイン後、「journalctl -xb」と入力してシステムログを表示し、「systemctl reboot」を再起動して「systemctl default」または「exit」と入力してデフォルトモードで起動します。Enterキーを押します。メンテナンスのために"
代わりに、私はこのリンクの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
swapspace http://pqxx.org/development/swapspace/をお試しください
ほとんどのディストリビューションにはパッケージ化されています。
EC2では、「swappath」を/ mntまたはhigh-iops diskに変更する必要がある場合があります。
次のスクリプトを使用して、Amazon Linuxにスワップを追加できます。
https://github.com/chetankapoor/swap
wgetを使用してスクリプトをダウンロードします。
wget https://raw.githubusercontent.com/chetankapoor/swap/master/swap.sh -O swap.sh
次に、次の形式でスクリプトを実行します。
sh swap.sh 2G
完全なチュートリアルについては、次のURLにアクセスしてください。