我目前正在运行一个ec2微实例,我发现该实例偶尔会耗尽内存 .
除了使用更大的实例大小外,还能做些什么呢?
如果您在 t2 实例( t2.micro , t2.medium , t2.small )上,则没有可用的临时或实例存储 . 所以你需要在 EBS 中创建你的交换,这取决于你的用例可能或者可能不是一个好主意 . 否则,请关注@David的回答,并在短暂存储上创建交换,以避免支付EBS费用 .
t2
t2.micro
t2.medium
t2.small
EBS
更多信息:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html有一个表格,显示您为每种实例类型获得的短暂存储空间 .
我们可以在任何服务器中添加交换空间
使用dd命令创建文件
#dd if=/dev/zero of=/swapfile bs=1M count=2048 or #dd if=/dev/zero of=/swapfile bs=1024M count=2
bs is blocksize 和 count 指的是 size in MB or GB
we can use vice versa
创建后更改文件的权限:
#chmod 600 /swapfile
然后makewap文件:
#mkswap /swapfile
然后使用swapon命令启用交换文件:
#swapon /swapfile
使用free命令检查是否启用了swap:
#free -h #swapon -s
您可以使用以下脚本在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
有关完整的教程,您可以访问:
https://installvirtual.com/shell-script-to-create-swap/
解决此问题的方法是向实例添加 swap (即 paging )空间 .
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也比Instance Store慢,而Instance Store随机提供certain types of EC2 Instances .
它通常会挂载到/ 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
Make和Flag作为交换
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免费层实例是否正在使用swap
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
试试 swapspace http://pqxx.org/development/swapspace/
大多数发行版都包装好了 .
在EC2上,您可能希望将“swappath”更改为/ mnt或high-iops磁盘 .
您可以使用以下步骤创建交换空间这里我们在 /home/ 创建交换
/home/
dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608这里count是交换空间的千字节数
dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
mkswap /home/swapfile1
vi /etc/fstab进入:/home/swapfile1 swap swap defaults 0 0
vi /etc/fstab
/home/swapfile1 swap swap defaults 0 0
运行:swapon -a
swapon -a
您可以使用以下命令为实例添加1 GB交换:
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 sudo mkswap /swapfile sudo swapon /swapfile
要在重新启动后默认启用它,请将此行添加到 /etc/fstab :
/etc/fstab
/swapfile swap swap defaults 0 0
9 回答
如果您在
t2
实例(t2.micro
,t2.medium
,t2.small
)上,则没有可用的临时或实例存储 . 所以你需要在EBS
中创建你的交换,这取决于你的用例可能或者可能不是一个好主意 . 否则,请关注@David的回答,并在短暂存储上创建交换,以避免支付EBS费用 .更多信息:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html有一个表格,显示您为每种实例类型获得的短暂存储空间 .
我们可以在任何服务器中添加交换空间
使用dd命令创建文件
bs is blocksize 和 count 指的是 size in MB or GB
we can use vice versa
创建后更改文件的权限:
然后makewap文件:
然后使用swapon命令启用交换文件:
使用free命令检查是否启用了swap:
您可以使用以下脚本在Amazon Linux上添加交换 .
https://github.com/chetankapoor/swap
使用wget下载脚本:
然后使用以下格式运行脚本:
有关完整的教程,您可以访问:
https://installvirtual.com/shell-script-to-create-swap/
解决此问题的方法是向实例添加
swap
(即paging
)空间 .分页的工作原理是在硬盘上创建一个区域并将其用于额外的内存,这个内存比普通内存慢得多,但可用的内存要多得多 .
要为您的实例添加此额外空间,请键入:
如果您需要超过1024,那么将其更改为更高的值 .
要在重新启动后默认启用它,请将此行添加到/ etc / fstab:
交换应该在实例存储(临时)磁盘上进行,而不是在EBS设备上进行 . 交换将导致大量IO并将增加EBS的成本 . EBS也比Instance Store慢,而Instance Store随机提供certain types of EC2 Instances .
它通常会挂载到/ mnt,但如果没有运行
然后在此设备上创建交换文件,对4GB交换文件执行以下操作
确保没有其他用户可以查看交换文件
Make和Flag作为交换
添加/确保/ etc / fstab中包含以下内容
最后启用交换
应用ajtrichards提到的步骤后,您可以使用此命令检查您的amazon免费层实例是否正在使用swap
结果:
SwapTotal: 1048572 kB
SwapFree: 1048572 kB
试试 swapspace http://pqxx.org/development/swapspace/
大多数发行版都包装好了 .
在EC2上,您可能希望将“swappath”更改为/ mnt或high-iops磁盘 .
您可以使用以下步骤创建交换空间这里我们在
/home/
创建交换dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
这里count是交换空间的千字节数
mkswap /home/swapfile1
vi /etc/fstab
进入:
/home/swapfile1 swap swap defaults 0 0
运行:
swapon -a
您可以使用以下命令为实例添加1 GB交换:
要在重新启动后默认启用它,请将此行添加到
/etc/fstab
: