當物理內存充足但 SWAP 佔用率較高(>30%)時,可能影響性能。通過 swapoff/swapon 循環可將 SWAP 數據遷回內存並清空交換分區。
# 關閉所有 SWAP
swapoff -a
# 啟用所有 SWAP
swapon -a
# 一鍵刷新(關閉後重新啟用)
swapoff -a && swapon -a
free -h 顯示可用內存 > 當前 SWAP 使用量/etc/fstab 註釋 SWAP 行,執行 swapoff -a#!/bin/bash
# 當 SWAP 使用率超過 30% 且可用內存 > 2GB 時自動刷新
SWAP_USED=$(free | awk '/Swap/ {print $3}')
SWAP_TOTAL=$(free | awk '/Swap/ {print $2}')
MEM_AVAIL=$(free | awk '/Mem/ {print $7}')
if [ $SWAP_TOTAL -gt 0 ]; then
USAGE=$((SWAP_USED * 100 / SWAP_TOTAL))
if [ $USAGE -gt 30 ] && [ $MEM_AVAIL -gt 2097152 ]; then
echo "$(date): SWAP usage ${USAGE}%, refreshing..." >> /var/log/swap_refresh.log
swapoff -a && swapon -a
fi
fi
# 臨時修改 (0-100, 越低越不傾向使用 SWAP)
sysctl vm.swappiness=10
# 永久修改
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
生產服務器建議設置 10-30,數據庫服務器可設 1 或 0(慎用)。
swapoff -a && swapon -a 是清理 SWAP 的標準手段,前提是物理內存充足。配合 vm.swappiness 調優,可讓系統更激進地使用物理內存,減少不必要的換出操作。
Shell 程式設計速查筆記:檔案測試、字串比較、數值運算、for 迴圈、sed 進階模式
Linux C/C++ 開發工具鏈全景:GCC、GDB、xxgdb、calls、calltree、cproto、indent、gprof 實戰指南
Linux /etc/fstab 損壞導致 LVM 掛載失敗的救援修復指南
RHEL 5.4 下安裝配置 JDK 完整步驟:RPM 安裝與環境變量設置
Linux 核心八大核心特徵:整體式架構、動態優先級排程、核心執行緒、跨平台記憶體管理、VFS、模組機制、可擴展系統呼叫、面向物件網路堆疊