1.
环境与实例选择
选择合适机型:优先选择具备专属 vCPU 或高性能共享型(例如香港节点 c5/m5 类似),带宽按业务峰值预留;购买 SSD 或 NVMe 云盘,IOPS 要足够;若有跨境访问,考虑香港至内地专线或 CDN。
2.
操作系统与基础设置
推荐 OS:CentOS 7/8、Ubuntu 20.04/22.04 或 AlmaLinux;关闭不需要的服务:systemctl disable --now
;设定时区、NTP:timedatectl set-timezone Asia/Hong_Kong && apt install chrony && systemctl enable --now chronyd。
3.
内核参数与网络调优(sysctl)
编辑 /etc/sysctl.conf,常用项:net.core.somaxconn=65535;net.ipv4.tcp_tw_reuse=1;net.ipv4.tcp_fin_timeout=15;net.ipv4.tcp_max_syn_backlog=4096;net.core.rmem_max=16777216;net.core.wmem_max=16777216。执行 sysctl -p 应用。
4.
TCP 拥塞控制与延迟优化
查看并设置:sysctl net.ipv4.tcp_congestion_control(建议 cake/bbr),启用 BBR:echo "tcp_bbr" > /etc/modules-load.d/bbr.conf;sysctl -w net.ipv4.tcp_congestion_control=bbr。
5.
中断/IRQ 亲和与网卡调度
查看网卡中断:cat /proc/interrupts;使用 irqbalance 服务或手动分配:echo > /proc/irq//smp_affinity;对多核实例启用 RSS/多队列,ethtool -L eth0 combined <队列数>。
6.
文件描述符与进程上限
提高限制:编辑 /etc/security/limits.conf 添加 * soft nofile 200000 与 * hard nofile 200000;为 systemd 服务在 Unit 文件中设置 LimitNOFILE=200000,然后 systemctl daemon-reload && systemctl restart 。
7.
CPU 调度与电源策略
设置性能模式:apt install cpufrequtils && cpufreq-set -r -g performance 或 echo performance > /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor;对延迟敏感服务绑定 CPU:taskset -c 。
8.
内存与 Swap 策略
禁用或调整 swap:swapoff -a(若内存充足并使用大页/缓存),调整 swappiness:sysctl vm.swappiness=10。启用透明大页慎用,数据库场景推荐使用 HugePages(特别是 Oracle/PG)并配置。
9.
磁盘与文件系统调优
使用 ext4/xfs 并开启 noatime:在 /etc/fstab 添加 noatime,nodiratime;对数据库分离数据盘并使用适当挂载选项;对 SSD 调整 I/O 调度器:echo noop > /sys/block/sdX/queue/scheduler。
10.
MySQL/MariaDB 调优示例
在 my.cnf 中调整:innodb_buffer_pool_size = 总内存的50%-70%;innodb_log_file_size = 256M-1G;innodb_flush_method = O_DIRECT;max_connections 根据连接池设置;启用慢查询日志并使用 pt-query-digest 分析。
11.
PostgreSQL 调优示例
修改 postgresql.conf:shared_buffers = 内存的25%;effective_cache_size = 内存的50%-75%;work_mem 依据并发调整;max_wal_size 与 checkpoint_timeout 配合减少同步写入。
12.
Nginx/应用层调优(以 Nginx + PHP-FPM 为例)
Nginx:worker_processes auto;worker_connections 65535;keepalive_timeout 15;开启 sendfile、tcp_nopush、tcp_nodelay。PHP-FPM:pm = dynamic 或 ondemand,根据内存与 RPS 设定 pm.max_children、pm.start_servers。
13.
Java/应用堆与 GC 调优
设置 Xms/Xmx 接近一致,例:-Xms8g -Xmx8g;使用 G1 或 ZGC(JDK 11+)并监控 GC pause:-XX:+UseG1GC -XX:MaxGCPauseMillis=200;开启线程和连接池限额避免 OOM 或连接耗尽。
14.
缓存与消息中间件设置(Redis/RabbitMQ)
Redis:maxmemory 设置并使用 volatile-lru/allkeys-lru 策略;保存配置关闭频繁的 RDB 持久化,使用 AOF 依据需求;持久化与内存权衡。RabbitMQ 调整预取(prefetch)和队列策略。
15.
负载均衡与横向扩展
使用 LVS/Nginx/HAProxy 做四层/七层负载均衡;配合 Keepalived 实现高可用;水平扩展数据库读写分离,写库主从或使用分片,中间层使用连接池与重试机制。
16.
压力测试、监控与回归验证
工具:iperf3(网络带宽)、siege/ab/jmeter(HTTP 压力)、sysbench(DB 压力)、netstat/iostat/vmstat/top(系统监控)。建立 Prometheus+Grafana 监控报警,记录基线并在每次调优后回归测试。
17.
安全与高可用注意事项
使用防火墙(ufw/iptables)仅开放必要端口;启用 fail2ban、SSH 密钥登录并禁用 root 直连;定期快照与异地备份,测试恢复流程。
18.
实操调优流程(一步步)
1) 备份并记录初始指标;2) 在低峰执行内核与 sysctl 调整;3) 调整服务配置并重启服务;4) 执行压力测试并监控关键指标;5) 根据瓶颈逐项微调并重复测试。
19.
常用命令速查
netstat -tunlp;ss -s;iostat -x 1 5;iftop -i eth0;tc qdisc show;sysctl -a | grep tcp;journalctl -u -f。
20.
在香港节点的特殊考虑
注意跨境延迟与带宽峰值,事先测试大陆到香港的 RT T 与丢包;根据客户分布决定是否使用 CDN 或边缘节点;若有合规或备案要求,准备好相应资料。
21.
问:在香港VPS上启用 BBR 会有什么风险?
21.1 答:BBR 可改善拥塞控制与吞吐,但在少数老旧内核或 ISP 路由下可能导致不稳定;上线前在测试环境用 iperf3 做端到端验证,若出现突发延迟回退到 cubic。
22.
问:如何判断是网络瓶颈还是数据库瓶颈?
22.1 答:并行跑网络测试(iperf3)验证带宽与丢包,使用 iostat/ioping 查看磁盘 IO,使用 slow query 和 pt-query-digest 分析 SQL;若网络稳定但 DB 等待率高,优先优化数据库。
23.
问:上线前的必做回归检查有哪些?
23.1 答:记录基线(CPU、内存、IO、延迟);运行压力测试至目标 QPS 并观察错误率;验证自动扩容/降级、备份恢复和监控告警策略;完成灰度后再全量切换。