raf*_*mvc 91 linux ubuntu swap amazon-ec2
我在 EC2 上启动了几台服务器,但它们没有交换。
我做错了什么还是机器没有任何东西?
Jo *_*iss 78
你是对的,Ubuntu EC2 EBS 镜像没有配置交换空间(至少对于11.04)。“常规”实例类型图像确实有一个交换分区,尽管我测试的那个只有 896 MB。
如果某些进程崩溃并且您没有交换空间,则您的服务器可能会在 OOM 杀手启动之前暂停一段时间,而使用交换,它只会变慢。出于这个原因,我总是喜欢有交换空间,即使有足够的 RAM。以下是您的选择:
创建一个 EBS 卷(RAM 大小的 2-4 倍),将其附加到您的实例(我喜欢称它为 /dev/xvdm 表示“内存”)sudo mkswap /dev/xvdm,将其添加到 fstab sudo swapon -a,然后您就可以开始了. 我以前做过这个,它工作得很好,但它可能比实例存储慢一点,因为它通过网络传输。
或者您可以重新分区您的磁盘以添加交换分区,但这可能需要创建一个新的 AMI。我一直无法在正在运行的实例中执行此操作,因为我无法卸载根文件系统,而且我什至无法访问磁盘设备 (/dev/xvda),只有分区 (xvda1)。
或者您可以创建一个交换文件。这是我现在首选的解决方案。
sudo dd if=/dev/zero of=/var/swapfile bs=1M count=2048 &&
sudo chmod 600 /var/swapfile &&
sudo mkswap /var/swapfile &&
echo /var/swapfile none swap defaults 0 0 | sudo tee -a /etc/fstab &&
sudo swapon -a
Run Code Online (Sandbox Code Playgroud)
完毕。:) 我知道很多人对使用文件而不是分区感到厌恶,但它作为紧急交换空间确实足够好。
Gui*_*ros 25
注意:亚马逊已更改其定价政策,并且自 2016 年年中起不对 I/O 请求收费。由于历史原因,答案保留在此处,但在 EC2 EBS 支持的实例上使用(或不使用)交换不会产生成本影响。
这是设计使然。交换在 EC2 EBS 支持的实例上默认关闭,以避免不可预测的成本。
如果您有一个流氓的内存饥渴应用程序(例如,在一个很小或很小的实例上),它可能会在您的 EBS 卷上生成相当多的 I/O 请求。亚马逊每 100 万次 I/O 请求收费 0.10 美元(请参阅http://aws.amazon.com/pricing/ebs/)。
在正常情况下,您不必担心;通常 I/O 请求的成本——即使是在较小的实例上——也只有几美元。因此,如果您知道您有一个适当大小的实例,其中交换将很少使用,请继续启用它。但要小心微小的实例。
如果启用交换,您可能需要关注使用情况报告。(可选)您还可以通过转到CloudWatch 控制面板并为总账单金额创建新警报来设置账单警报。通过这种方式,您会立即收到通知,说明您的实例发生了一些奇怪的事情。
seb*_*min 25
交换恕我直言的最佳位置是实例存储。为什么?AWS 不会向您收取实例存储上的 i/o 费用。此外,在许多情况下,实例存储比 EBS 性能更高。只要确保您有一个脚本来重新创建交换文件,以防您停止实例。重启就好了。为什么哦为什么它默认不存在?
让我们找到实例存储。
root@domU-**-**-**-**-**-**:/var/log# fdisk -l
[...]
Disk /dev/xvda2: 160.1 GB, 160104972288 bytes
255 heads, 63 sectors/track, 19464 cylinders, total 312705024 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/xvda2 doesn't contain a valid partition table
Run Code Online (Sandbox Code Playgroud)
万岁,160.1GB 免费!把你的交换放在那里,当你的基于 EBS 的交换被错误地挤满时,忘记每台服务器 100 美元的超额费用。不幸的经历在这里说话。
显然在某些情况下您看不到实例存储。
根据实例类型,您首先需要使用块设备映射选项将实例存储卷附加到实例。如果您不这样做,您甚至可能看不到 /dev 下的设备(根据如何在 Amazon EC2 中使用“实例存储卷”存储?)
检查/etc/fstab文件,它们可能是在没有交换您正在使用的图像的情况下设置的。我认为有些人在没有交换服务器的情况下运行,因为他们希望永远不会使用超过总内存的内存 - 交换会使一切变得非常慢。
但是,我总是对某些进程在内存中膨胀感到偏执,因此我认为您最好简单地设置一个交换驱动器并从正在运行的 ec2 实例重新创建一个映像。
| 归档时间: |
|
| 查看次数: |
46951 次 |
| 最近记录: |