Ubuntu
Ubuntu 伺服器上的高交換使用率
這是該命令在Nginx反向代理後面
free
執行Spring Boot應用程序的伺服器上報告的內容:$ free -h total used free shared buff/cache available Mem: 1.9Gi 893Mi 164Mi 29Mi 919Mi 883Mi Swap: 511Mi 481Mi 30Mi
我應該如何解釋高交換使用率?這是否表明我應該將伺服器升級到更高的記憶體容量(例如 4 GiB)?
vmstat的輸出
$ 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
從
vmstat
您沒有的輸出si
或so
活動中可以看出,即使是平均值(第一行)也可以忽略不計。嘗試使用,swappiness
但如果您沒有看到嚴重的性能下降,則無需更改任何內容。
在我看來,這不應該被解釋為直接進行 RAM 升級的論據,因為關於 SWAP 有很多因素,其中一個是swappiness。
什麼是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
這裡有一個解釋得更好的文章。