这是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
您没有si
或so
活动,甚至平均值(第一行)也可以忽略不计。尝试一下,swappiness
但如果您没有看到严重的性能下降,则无需进行任何更改。
答案2
在我看来,这不应该被解释为直接进行 RAM 升级的论据,因为与 SWAP 有关的因素有很多,其中之一就是交换性。
什么是 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
有一篇解释得更清楚的帖子这里。