- 基础优化
1.1 关闭不必要的服务
检查哪些服务在后台运行,并禁用不必要的服务:
systemctl list-units --type=service --state=running
systemctl disable --now <service-name>
常见可以关闭的服务:cups, bluetooth, avahi-daemon, rpcbind 等。
1.2 更新系统与软件包
保持系统最新,减少安全漏洞并提升性能:
apt update && apt upgrade -y # Debian/Ubuntu
yum update -y # CentOS
1.3 启用BBR提高网络速度
BBR(Bottleneck Bandwidth and Round-trip propagation time)可以优化TCP传输,提高网络吞吐量:
echo "net.core.default_qdisc=fq" | tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | tee -a /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_congestion_control
如果返回 bbr,说明启用成功。
2. CPU与进程优化
2.1 限制CPU占用(防止高负载)
安装 cpulimit 限制单个进程的CPU占用:
apt install cpulimit -y # Debian/Ubuntu
yum install epel-release -y && yum install cpulimit -y # CentOS
cpulimit -e process_name -l 50 # 限制该进程最多使用50%的CPU
2.2 限制进程数量(防止资源耗尽)
编辑 /etc/security/limits.conf,为指定用户添加限制:
username hard nproc 200
这样用户 username 最多只能运行 200 个进程。
3. 内存优化
3.1 禁用或调整 Swap
Swap 在 VPS 上可能会影响性能,特别是 SSD 方案:
swapoff -a # 关闭 Swap
sed -i '/swap/d' /etc/fstab # 防止重启后恢复
如果 VPS 内存较小(512MB~1GB),建议保留 Swap 但优化:
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
这样系统更倾向于使用物理内存,而非频繁读写 Swap。
3.2 清理缓存
定期释放无用的缓存,减少内存占用:
sync; echo 3 > /proc/sys/vm/drop_caches
可以加到 cron 任务中,每天定期执行:
echo "0 4 * * * root sync; echo 3 > /proc/sys/vm/drop_caches" >> /etc/crontab
- 磁盘与存储优化
4.1 使用 Fstrim(针对 SSD VPS)
如果 VPS 使用 SSD,启用 fstrim 以保持性能:
systemctl enable fstrim.timer
systemctl start fstrim.timer
4.2 提高文件系统 I/O 性能
调整 I/O 调度器:
echo "noop" > /sys/block/sda/queue/scheduler
或者 mq-deadline(适用于大部分 VPS):
echo "mq-deadline" > /sys/block/sda/queue/scheduler
4.3 清理日志文件
日志文件过大会影响磁盘空间,定期清理:
journalctl --vacuum-size=100M # 清理日志至100MB
- 网络优化
5.1 调整 TCP 参数
编辑 /etc/sysctl.conf 添加以下内容:
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 87380 16777216
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_slow_start_after_idle=0
应用新配置:
sysctl -p
5.2 禁用 IPV6(如果不需要)
部分 VPS 的 IPv6 可能影响网络稳定性,建议禁用:
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p
Comments NOTHING