背景:某CentOS 7服務器因業務增長,物理內存(8GB)頻繁接近飽和,系統響應速度下降,需擴展虛擬內存。
解決步驟:
swapon --show
確認系統無Swap空間;dd if=/dev/zero of=/swapfile bs=1M count=8192
創建8GB Swap文件(8GB物理內存建議Swap大小為8GB,符合“內存1倍”規則);chmod 600 /swapfile
(設置安全權限)、mkswap /swapfile
(格式化為Swap格式)、swapon /swapfile
(立即啟用);/etc/fstab
,添加/swapfile swap swap defaults 0 0
,確保重啟后自動掛載。free -h
顯示Swap已啟用,top
命令監控到內存使用率從90%降至70%,響應速度恢復。背景:某企業CentOS 8服務器運行Java應用,物理內存充足(16GB),但系統仍頻繁使用Swap,導致磁盤I/O升高(iostat
顯示swap讀寫速率達10MB/s),性能下降。
原因分析:cat /proc/sys/vm/swappiness
顯示值為60(默認),系統過度依賴Swap,即使物理內存充足也會交換數據。
優化步驟:
sysctl vm.swappiness=10
,將Swap依賴降低至10(推薦范圍10-30,適用于內存充足場景);/etc/sysctl.conf
,添加vm.swappiness=10
,運行sysctl -p
使配置生效。vmstat 1
監控到swap讀寫速率降至0.5MB/s以下,磁盤I/O負載下降80%,Java應用響應時間從2s縮短至0.5s。背景:某CentOS 7 Web服務器突然出現響應停滯,top
命令顯示系統負載高達20,free -h
顯示Swap使用率達95%,iostat
顯示磁盤寫入速率達50MB/s。
原因分析:
top
按Shift+M
排序,發現Nginx進程占用內存達6GB(物理內存8GB),導致系統觸發Swap;cat /proc/sys/vm/swappiness
顯示值為60,系統過度交換。swapoff /swapfile
(關閉Swap)、swapon /swapfile
(重新啟用),釋放Swap空間;sysctl vm.swappiness=10
,降低Swap依賴;worker_processes
為2(匹配CPU核心數),限制worker_connections
為1024,減少內存占用。背景:某CentOS 8 Kubernetes集群節點運行多個Python數據處理容器,某容器因內存泄漏導致內存占用飆升(從2GB增至8GB,節點物理內存為16GB),需防止節點OOM(Out-of-Memory)崩潰。
解決步驟:
kubectl set resources deployment/python-container --limits=memory=4Gi,ephemeral-storage=2Gi
,限制容器使用4GB物理內存+2GB Swap(ephemeral-storage
對應Swap);dd if=/dev/zero of=/swapfile bs=1M count=2048
、mkswap /swapfile
、swapon /swapfile
),并添加至/etc/fstab
;kubectl top pod
監控容器內存使用,發現泄漏容器后,通過kubectl delete pod
重啟容器。問題表現:CentOS 7服務器重啟后,free -h
顯示Swap使用量為0,swapon --show
無輸出,手動swapon /swapfile
可啟用。
原因分析:/etc/fstab
中Swap配置錯誤(如設備名變更,原為/dev/sdb1
,現變為/dev/sdc1
)。
解決方案:
/etc/fstab
,將Swap配置行修改為正確設備名(/dev/sdc1 swap swap defaults 0 0
);swapon -a
啟用所有fstab中的Swap;問題表現:系統日志(dmesg
)中出現“scheduling while atomic: swapper”錯誤,系統無法正常啟動,卡在內核加載界面。
原因分析:內核代碼在原子上下文(如中斷處理程序)調用了睡眠函數(如mutex_lock
),觸發調度沖突。
解決方案:
dmesg | grep -i "scheduling while atomic"
定位錯誤發生的內核函數(如irq_handler
);mutex_lock
替換為mutex_lock_interruptible
(允許中斷);問題表現:CentOS 8服務器使用SSD作為Swap分區,iostat
顯示SSD寫入量激增(日均100GB),系統性能提升不明顯(vmstat 1
顯示si/so
(Swap in/out)速率仍達5MB/s)。
原因分析:SSD隨機寫入性能有限(約50MB/s),頻繁Swap操作加速SSD磨損,且性能提升不如物理內存。
解決方案:
swapoff /swapfile
,刪除/etc/fstab
中的Swap配置);zram
(內存中的壓縮Swap):執行modprobe zram
加載模塊,echo lz4 > /sys/block/zram0/comp_algorithm
設置壓縮算法(LZ4),echo 4G > /sys/block/zram0/disksize
設置Swap大?。?GB,為物理內存的1/4),mkswap /dev/zram0
格式化,swapon /dev/zram0
啟用。iostat
顯示SSD寫入量降至10GB/天,vmstat 1
顯示si/so
速率降至0.1MB/s以下,系統性能提升30%。