如何将交换添加到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
应该在实例存储(临时)磁盘上进行交换,而不是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提到的步骤之后,您可以使用此命令检查您的亚马逊免费层实例是否正在使用交换
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
链接地址: http://www.djcxy.com/p/54097.html