在 Ubuntu 14.04 上,必须增加交换文件,因为内存和交换使用率达到 100%。
在实时生产服务器上,是否可以在对服务的干扰最小的情况下增加交换?
输出free -h
:
total used free shared buffers cached
Mem: 3.9G 3.4G 435M 24K 1.2M 7.5M
-/+ buffers/cache: 3.4G 443M
Swap: 8.0G 6.6G 1.4G
我同意关于更多 RAM 的评论。回答您的问题:您可以创建额外的交换分区(如果硬盘上有额外的空间)或创建交换文件。
使用的交换越多,硬盘上的负载就越大,而且系统肯定越慢。
正如迈克尔汉普顿在他的评论中提到的那样,你需要更多的 RAM,而不是交换。
交换空间通常仅在您的应用程序无法放入可用 RAM 时使用 - 这通常是与 Windows 不同的使用模式,在 Windows 中,页面文件通常用于不经常访问的页面。
如果您的交换空间不在闪存存储上,那么它的性能可能会比实际 RAM 差很多。
但是,要回答这个问题,您不能实时扩展交换。您将需要卸载/交换,扩展底层存储,然后重新安装/交换。
忘记真正的操作系统对动态调整大小的支持:您没有使用WINDOWS®!:-) 更严重的是:您可以在使用交换文件时增加它的大小,但您需要再次运行 mkswap,这意味着先卸载它。
我还要说,如果您使用碎片文件系统,使用文件而不是分区通常会增加访问时间,从而使您可能很慢的系统变慢。
由于您使用的交换大小,我将设置
/proc/sys/vm/swappiness
为 100,它可能会在更高的交换空间使用量的范围内减少磁盘活动。我不知道您的 RAM/已用交换比率;但鉴于使用的交换大小,我怀疑它太高了。如果这是真的,你真的应该考虑在你的服务器开始大停顿之前添加一些内存模块。