每次登录VPS看到蜗牛般的响应速度,是不是特别想砸键盘?我刚开始用海外VPS搭建网站时,经常遇到页面加载要十几秒的情况。后来才发现,问题出在TCP拥塞控制和内存配置上。
TCP拥塞控制就像交通信号灯,决定了数据包在网络中的传输节奏。默认的算法往往过于保守,导致带宽利用率不足。而BBR(Bottleneck Bandwidth and Round-trip propagation time)是Google开发的新型算法,它能动态探测网络瓶颈,显著提升传输效率。实测在跨洋线路中,启用BBR后下载速度能提升3-5倍。
另一个常见痛点是内存不足。很多低价VPS只配512MB内存,跑个MySQL就捉襟见肘。这时候虚拟内存(swap)就是救命稻草。合理配置swap可以让小内存VPS也能稳定运行中型应用。我曾用1GB内存的VPS通过2GB swap成功扛住了日均5000PV的WordPress站点。
原版BBR是最稳定的选择,适合追求可靠性的场景。我在生产环境的首选就是它,特别是对电商类网站,稳定性比峰值速度更重要。
魔改BBR(如LotServer)针对中国特殊网络环境优化过。有次给客户部署跨境直播服务,原版BBR延迟在200ms左右,换魔改版后直接降到120ms。但要注意部分魔改版可能存在兼容性问题。
BBR Plus在丢包率高的情况下表现突出。测试过在5%丢包率的线路上,它的吞吐量比原版高30%。暴力BBR魔改版则更适合大带宽场景,我在100Mbps的独服上测试时,它能吃满整个带宽。
锐速(ServerSpeeder)是老牌加速工具,对内核版本要求低。有次遇到CentOS 6的老机器,其他BBR都装不了,锐速就成了唯一选择。不过它闭源收费的模式让很多人望而却步。
swap大小不是越大越好。我建议遵循这个公式:物理内存<2GB时,swap=内存×2;2-8GB内存时,swap=内存+2GB;>8GB时可适当减少。曾经给4GB内存的机器配了16GB swap,结果频繁的磁盘IO反而拖慢了系统。
swappiness参数也很关键。默认值60往往偏高,对于SSD存储我通常调到10-30。可以通过这个命令查看当前值:
bash复制cat /proc/sys/vm/swappiness
先更新系统并安装必要工具,不同系统的命令如下:
CentOS/RHEL:
bash复制yum update -y && yum install -y wget curl
Debian/Ubuntu:
bash复制apt update -y && apt install -y wget curl
建议先备份重要数据。有次我在内核升级过程中遇到断电,系统直接挂了。现在养成了操作前先用这个命令备份的习惯:
bash复制tar -zcvf /backup/vps-backup-$(date +%Y%m%d).tar.gz /etc /var/www
执行这个全能脚本:
bash复制wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
安装界面会先让你选择内核。新手建议选稳定版内核,我常用的是5.10.x LTS版本。安装完成后需要重启,记得提前安排好维护窗口。
重启后再次运行脚本,就可以选择加速方案了。建议先用原版BBR测试效果,不满意再尝试其他版本。切换时不需要重新安装内核,非常方便。
用这个脚本快速创建swap:
bash复制wget https://www.moerats.com/usr/shell/swap.sh && bash swap.sh
建议将swap文件放在SSD上,如果是HDD存储效果会打折扣。有次客户抱怨swap没效果,发现他的VPS用的机械硬盘,换成SSD后性能立竿见影。
配置完成后检查状态:
bash复制free -h
swapon --show
我常用的组合是speedtest-cli+ping测试:
bash复制curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -
ping -c 10 google.com
更专业的可以用iperf3进行点对点测试。记得测试不同时段的表现,有次发现晚上速度慢,原来是邻居VPS在跑备份占满共享带宽。
安装htop实时监控:
bash复制apt install -y htop # Debian/Ubuntu
yum install -y htop # CentOS
重点关注内存使用率和swap活跃度。如果发现swap频繁读写,可能需要优化应用或升级内存。
对于高并发场景,可以调整TCP参数:
bash复制echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
遇到过一个WordPress站点,调优后并发处理能力从50提升到200。但要注意过度优化可能导致不稳定,建议每次只改一个参数并观察效果。