我目前正在运行一个ec2微实例,我发现实例偶尔会内存不足。

除了使用更大的实例大小,还可以做什么?


当前回答

试试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

你可以用下面的命令给你的实例添加一个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

交换应该发生在实例存储(临时)磁盘上,而不是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

在应用ajtricards提到的步骤之后,您可以使用这个命令检查您的amazon free tier实例是否正在使用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或高iops磁盘。