如何增加实时服务器上的交换空间

如何增加实时服务器上的交换空间

在 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

答案1

我同意关于更多 RAM 的评论。回答您的问题:您可以创建额外的交换分区(如果您的硬盘上有额外的空间)或创建交换文件。

dd if=/dev/zero of=/path/to/swap_file bs=1024 count=${size_of_additional_swap}
mkswap /path/to/swap_file
swapon /path/to/swap_file

使用的交换空间越多,硬盘的负载就越大,系统运行速度肯定会越慢。

答案2

正如迈克尔·汉普顿在他的评论中提到的,你需要更多的 RAM,而不是交换。

交换空间通常仅在您的应用程序无法容纳可用 RAM 时才使用 - 这通常与 Windows 的使用模式不同,在 Windows 中,页面文件通常用于不经常访问的页面。

如果你的交换空间不在闪存上,那么它可能会执行很多比实际 RAM 更差。

但是要回答这个问题,您无法实时扩展交换。您需要卸载/交换,扩展底层存储,然后重新安装/交换。

答案3

忘记真正的操作系统对动态调整大小的支持:你没有使用WINDOWS®! :-) 突破 Windows 的极限:虚拟内存
更严重的是:您可以在使用交换文件时增加其大小,但您需要再次运行 mkswap,这意味着要先将其卸载。

我还想说,如果您使用碎片文件系统,使用文件而不是分区通常会增加访问时间,从而使本来就很慢的系统变得更慢。

由于您使用的交换大小,我会将其设置/proc/sys/vm/swappiness为 100,这可能会减少磁盘活动,但代价是更高的交换空间使用率。
我不知道您的 RAM/已使用交换的比率;但考虑到已使用的交换大小,我怀疑它太高了。如果这是真的,您应该真正考虑在服务器开始出现严重停滞之前添加一些内存模块。

相关内容