1.
总体思路与准备工作
- 确定优化目标:降低RTT、提高并发吞吐、缩短页面首字节时间(TTFB)。
- 测试基线数据:使用ping、iperf3、curl -w和webpagetest建立前后对比数据。
- 硬件/带宽评估:记录vCPU、内存、磁盘类型和带宽上限(示例:4vCPU/8GB/120GB NVMe/1Gbps)。
- 备份与回滚策略:优先快照和配置版本管理,避免生产故障。
- 权限与安全:确保SSH密钥、sudo策略、并准备应急控制台访问。
2.
网络层优化(路由、MTU、队列策略)
- MTU 调整:将 MTU 设为 1500 或根据隧道/ISP 调整至 1400,命令示例:ip link set dev eth0 mtu 1500。
- 启用合理队列调度:推荐使用 fq 或 cake,示例:tc qdisc replace dev eth0 root fq_codel。
- 检查默认路由与邻居:使用 traceroute/tracepath 找出跳数与延迟瓶颈。
- TCP Fast Open 与 Keepalive:在应用层开启 keepalive 和合理的超时,减少握手。
- 路由冗余与 Anycast:如对延迟敏感,可使用 Anycast DNS 或购买多线 BGP 机房。
3.
内核与 TCP 参数调优(含具体数值)
- 启用 BBR 拥塞控制:echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf,并加载 sysctl -p。
- 推荐 sysctl 配置(示例数值):
net.core.rmem_max=33554432
net.core.wmem_max=33554432
net.ipv4.tcp_rmem=4096 87380 33554432
net.ipv4.tcp_wmem=4096 65536 33554432
net.core.netdev_max_backlog=250000
- 启用 TCP 时间戳和窗口扩大:net.ipv4.tcp_timestamps=1, net.ipv4.tcp_window_scaling=1。
- 文件句柄与连接数:提高 ulimit -n 到 200000,并调整 fs.file-max=200000。
4.
Web 服务与应用层优化(Nginx/Apache/HTTP2/HTTP3)
- Nginx 基本优化示例:worker_processes auto; worker_connections 4096; keepalive_timeout 10; sendfile on; tcp_nopush on; tcp_nodelay on。
- 启用 HTTP/2 与 TLS 会话重用:增加 ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; 并开启 http2。
- 启用 Brotli 或 gzip 压缩,优先 Brotli(静态资源压缩比更好)。
- 静态内容交由 CDN 分发,设置 Cache-Control 与 ETag 减少回源请求。
- 应用层连接池与异步:数据库使用连接池,PHP-FPM 设置示例:pm = dynamic; pm.max_children = 50; pm.start_servers = 5; pm.max_requests = 500。
5.
数据库与存储IO优化(MySQL、InnoDB、SSD)
- 服务器示例磁盘:120GB NVMe,随机读写 IOPS 可达 50k/20k(视供应商而定),检测工具:fio。
- MySQL 推荐配置(8GB 内存服务器示例):innodb_buffer_pool_size = 5G; innodb_flush_method = O_DIRECT; innodb_log_file_size = 512M。
- 查询优化:慢查询日志、索引覆盖、使用 EXPLAIN 优化关键 SQL。
- 文件系统调优:对数据库目录使用 noatime 挂载,确保 discard 支持并开启 TRIM。
- 缓存策略:Redis/Memcached 放置于本机或同城私有网络,降低数据库读压力。
6.
安全、DDoS 防御与运维策略
- 边缘防护:优先使用 Cloudflare、Akamai 等 CDN 的 DDoS 防护与 WAF。
- 主机端防护:配置 iptables/nftables 限速、fail2ban 防暴力破解,设置 syn-flood 限制。
- 网络层黑洞与流量清洗:与供应商协商 BGP 黑洞或上游清洗服务(按流量计费)。
- 日志与告警:使用 Prometheus + Grafana 监控网络带宽、连接数、IOPS、CPU 和内存。
- 灾备与自动伸缩:重要业务考虑跨机房热备或自动扩容策略,保证高峰期性能。
7.
真实案例:香港 VPS 调优前后对比(含配置与数据)
- VPS 基线配置(真实示例):4 vCPU、8 GB RAM、120 GB NVMe、1 Gbps 不限流、香港机房。
- 调优前测试(基线):ping(香港ISP)平均 RTT = 6.8 ms;iperf3 TCP 下载 620 Mbps;首页 TTFB = 420 ms(未启用 CDN)。
- 主要调整:启用 BBR、tc fq_codel、Nginx 调优(keepalive、sendfile)、开启 Brotli、MySQL 调整 innodb_buffer_pool_size=5G,并使用 Cloudflare CDN。
- 调优后测试:ping 保持 ~6.5 ms(MTU 调整后更稳定);iperf3 TCP 下载 910 Mbps(利用带宽峰值);首页 TTFB = 68 ms(启CDN并开启 HTTP/2)。
- 小结与建议:结合本地内核调优与边缘 CDN 能显著缩短全球访问延迟,内网缓存减少数据库压力。
| 项目 |
调优前 |
调优后 |
| 平均 RTT(香港到客户端) |
6.8 ms |
6.5 ms |
| iperf3 TCP 吞吐 |
620 Mbps |
910 Mbps |
| 首页 TTFB |
420 ms |
68 ms |
| 并发连接稳定性 |
高并发时出现 502 |
稳定(Nginx + PHP-FPM 调优) |
| 磁盘 IO 响应(随机读) |
平均 2.4 ms |
平均 1.1 ms(启用 NVMe 优化与 O_DIRECT) |
8.
检测工具与持续优化建议
- 常用测速工具:ping、mtr、iperf3、curl -w '%{time_starttransfer}'、webpagetest、GTmetrix。
- 自动化检测:定期采集 Prometheus 指标并设置阈值告警(RTT、丢包率、CPU、IO 等)。
- 回归测试:每次配置变更后在非高峰窗口做回滚演练并对比历史数据。
- 用户分流策略:通过 GeoIP、Anycast 或多机房部署分散用户流量。
- 文档化与变更管理:所有 sysctl、tc、Nginx、MySQL 配置使用版本控制并记录变更理由与测试结果。
来源:如何通过优化配置让你的比较快的香港vps 达到最佳速度