Ubuntu 服务器上的交换空间使用率过高

Ubuntu 服务器上的交换空间使用率过高

这是free运行Spring Boot应用程序背后Nginx反向代理:

$ free -h

               total        used        free      shared  buff/cache   available
Mem:           1.9Gi       893Mi       164Mi        29Mi       919Mi       883Mi
Swap:          511Mi       481Mi        30Mi

我应该如何解释高交换使用率?这是否意味着我应该将服务器升级到更高的内存容量(例如 4 GiB)?

输出状态监测

$ vmstat 1 5

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0 493428 150620  95476 879668    0    1     8    28    1    0  3  1 95  0  1
 0  0 493428 150620  95476 879708    0    0     0     4  970 1891  4  1 95  0  0
 1  0 493428 150620  95476 879712    0    0     0     0  851 1708  6  6 86  0  3
 2  0 493428 150620  95476 879712    0    0     0     0  704 1398  4  5 91  0  0
 1  0 493428 150620  95476 879712    0    0     0    16  583 1206  3  3 94  0  0

答案1

从输出中可以看出,vmstat您没有siso活动,甚至平均值(第一行)也可以忽略不计。尝试一下,swappiness但如果您没有看到严重的性能下降,则无需进行任何更改。

答案2

在我看来,这不应该被解释为直接进行 RAM 升级的论据,因为与 SWAP 有关的因素有很多,其中之一就是交换性。

Ubuntu 常见问题解答

什么是 swappiness 以及如何改变它?

swappiness 参数控制内核将进程从物理内存移出并移至交换磁盘的趋势。由于磁盘比 RAM 慢得多,因此如果进程过于频繁地移出内存,这会导致系统和应用程序的响应时间变慢。

  • swappiness 的值可以在 0 到 100 之间
  • swappiness=0 告诉内核尽可能避免将进程交换出物理内存
  • swappiness=100 告诉内核积极地将进程从物理内存中交换出来,并将其移至交换缓存

Ubuntu 中的默认设置是 swappiness=60。降低 swappiness 的默认值可能会提高典型 Ubuntu 桌面安装的整体性能。建议使用 swappiness=10,但您可以随意尝试。注意:Ubuntu 服务器安装与桌面系统的性能要求不同,默认值 60 可能更合适。

检查 swappiness 值

cat /proc/sys/vm/swappiness

要更改 swappiness 值,可以使用以下命令临时更改 swappiness 值为 10(重启后丢失)

sudo sysctl vm.swappiness=10

要使更改永久生效,请使用您喜欢的编辑器编辑配置文件:

gksudo gedit /etc/sysctl.conf

搜索 vm.swappiness 并根据需要更改其值。如果 vm.swappiness 不存在,请将其添加到文件末尾,如下所示:

vm.swappiness=10

保存文件并重新启动或输入以下内容:

sudo sysctl --load=/etc/sysctl.conf

有一篇解释得更清楚的帖子这里

相关内容