当Linux系统的Swap空间利用率过高时,会影响系统性能,以下是详细的解决方案:
首先检查当前Swap使用情况:
free -h
swapon --show
vmstat 1 5
# 查看哪些进程占用Swap
sudo grep -i swap /proc/*/status | sort -nk2 | tail
# 临时释放部分Swap
sudo swapoff -a && sudo swapon -a
如果服务器经常使用Swap,最根本的解决方案是增加物理内存。
# 查看当前swappiness值(0-100)
cat /proc/sys/vm/swappiness
# 临时设置为较低值(推荐10-30)
sudo sysctl vm.swappiness=30
# 永久设置
echo "vm.swappiness=30" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 创建Swap文件(例如增加4GB)
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 永久生效
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
设置监控告警:
# 添加crontab定期检查
*/30 * * * * [ $(free | awk '/Swap/{printf("%d"), $3/$2*100}') -gt 80 ] && wall "Swap usage over 80%"
使用工具监控: - Nagios/Zabbix - Prometheus + Grafana - atop/htop
通过以上方法,可以有效解决Swap空间利用率过高的问题,提高系统整体性能。