最近刚刚基于最新的 18.04 构建了一个新的 AMI。apt upgrade
在配置它时也做了一些事情,以便拥有最新的软件包。
问题是这个新的 AMI 没有交换文件,已通过检查swapon --show
。它使用5.3.0-1030-aws内核。6 个月前用同样的方式构建的相同映像(但没有apt upgrade
在其基础上完成)使用4.15.0-1052-aws,正如预期的那样,有一个交换文件。
交换文件也可以在配置时创建,但我只是好奇为什么自 12 月以来这种情况发生了变化。
我错过了什么?
答案1
我不知道为什么或者如果它改变了,但是...你真的做到了吗?需要交换文件或者交换分区?
出于性能原因而需要它的时代已经一去不复返了。您应该选择具有足够内存以满足您的工作负载的实例类型,并且您不需要交换空间。
查看内存优化的 EC2 实例每个 CPU 的内存比通用 T3/M5/等实例多得多。同样的价格,您可以获得更多内存(和更少的 CPU,但这通常不是问题)。
答案2
可能你默认选择了没有交换卷的实例类型。某些 EC2 小内存实例在小型实例上启动时启用了交换卷实例存储交换卷。
或者,交换空间可能存在,但由于某些脚本或 fstab 更改而未被使用。确认找到的所有交换设备lsblk --fs
均在使用中。
交换空间仍有使用案例。Linux 内存管理对于所有系统(除了具有过多可用内存的系统)来说,使用交换空间都更加高效。它允许将内存分配推到仅使用物理 RAM 无法实现的水平。最好挖掘交换空间,而不是惹恼 OOM 杀手或使系统崩溃。
当然,这不是一个神奇的获得更多 RAM 按钮。过多的分页会导致内核不得不等待速度较慢的二级存储,从而影响性能。SAN 存储(EC2 中称为 EBS)上的交换会不必要地消耗网络带宽;请在 EC2 上使用实例存储卷。而且 DRAM 的速度相对较快,因此价格相对便宜。然后是配置交换空间的操作烦恼,就像您当前的谜团一样。许多系统都不在乎交换空间。
答案3
毕竟,这些内核版本(当然)或基本 AMI 之间没有区别。
最有可能的情况是,某人在某个时候手动进行了这一更改。