我目前正在运行一个ec2微实例,我发现实例偶尔会内存不足。
除了使用更大的实例大小,还可以做什么?
我目前正在运行一个ec2微实例,我发现实例偶尔会内存不足。
除了使用更大的实例大小,还可以做什么?
当前回答
如果你在t2个实例上(t2。微,t2。Medium, t2.small),没有可用的临时存储或实例存储。因此,您只需要在EBS中创建交换,这取决于您的用例,可能是一个好主意,也可能不是。 否则,请遵循@David的回答,并在临时存储上创建交换,以避免支付EBS成本。
更多信息:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html有一个表,显示了每个实例类型有多少临时存储。
其他回答
试试swapspace http://pqxx.org/development/swapspace/
大多数发行版都打包了它。
在EC2上,您可能希望将“swappath”更改为/mnt或高iops磁盘。
解决这个问题的方法是向实例添加交换(即分页)空间。
分页的工作原理是在你的硬盘驱动器上创建一个区域,并使用它作为额外的内存,这个内存比正常的内存慢得多,尽管它有更多的可用内存。
要将这个额外的空间添加到你的实例,输入:
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
如果你在t2个实例上(t2。微,t2。Medium, t2.small),没有可用的临时存储或实例存储。因此,您只需要在EBS中创建交换,这取决于您的用例,可能是一个好主意,也可能不是。 否则,请遵循@David的回答,并在临时存储上创建交换,以避免支付EBS成本。
更多信息:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html有一个表,显示了每个实例类型有多少临时存储。
交换应该发生在实例存储(临时)磁盘上,而不是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
最后启用swap
sudo swapon -a
你可以用下面的命令给你的实例添加一个1gb的交换空间:
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