1. 明确目标:在台湾机房托管或云主机,在并发数从100到10000的范围内,观察响应时间、错误率、CPU/内存/网络使用、丢包与恢复时间。准备清单:两台或多台候选服务器(不同供应商)、同一业务代码(静态页面+简单API)、压测工具(wrk、k6、JMeter)、监控工具(Prometheus+Grafana 或 Zabbix)、网络诊断工具(mtr、ping、traceroute)。
2. 实际步骤:a) 获取候选机房的带宽、峰值承诺、BGP/ASN信息;b) 从多地(大陆、香港、日本、东南亚)用 mtr -r -c 100 ip 或者 ping 测丢包和延迟;命令示例:mtr -rwzbc100 203.x.x.x;c) 用 iperf3 测带宽:iperf3 -c 203.x.x.x -t 30;d) 要求厂商提供抖动/丢包历史或SLAs。
3. 保证测试公平:a) 镜像相同操作系统(例如 Ubuntu 22.04),b) 安装相同软件栈:nginx、PHP/Node、数据库(若有)、相同配置;c) 使用脚本化部署(示例 Ansible 或 bash)。示例命令:apt update && apt install -y nginx php-fpm git;将业务代码拉取到 /var/www/test 并设置相同 nginx server 配置。
4. 内核与网络优化示例:在 /etc/sysctl.conf 添加并执行 sudo sysctl -p:
5. net.core.somaxconn=65535 net.ipv4.tcp_tw_reuse=1 net.ipv4.ip_local_port_range=1024 65535 net.ipv4.tcp_fin_timeout=15 net.core.netdev_max_backlog=250000
6. Nginx 关键配置(示例 /etc/nginx/nginx.conf http 段):worker_processes auto; worker_connections 65535; keepalive_timeout 15; sendfile on; tcp_nopush on;
7. 静态资源放 CDN,API 接口做缓存(nginx proxy_cache)。示例指令创建 cache:proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mycache:10m max_size=10g inactive=60m use_temp_path=off;
8. 负载均衡:用 LVS 或云厂商的 LB。测试时开启轮询并记录单后端和双后端差异。
9. 推荐工具:wrk(轻量、高并发),k6(脚本化更灵活),JMeter(复杂场景)。wrk 示例:wrk -t12 -c1000 -d60s http://yourdomain/path;表示12线程,1000并发,跑60秒。
10. k6 简单 JS 脚本(示例): export default function () { http.get('https://yourdomain/path'); }
运行:k6 run --vus 500 --duration 1m script.js(500虚拟用户持续1分钟)。
11. 分阶段:a) 预热(低并发 50-200)30秒到1分钟;b) 线性爬升:每30s 增加并发(例如 200、400、800、1600)并记录指标;c) 峰值维持:在目标并发(如5000)维持5~10分钟看稳定性;d) 突发压力:瞬时大量并发(突增)评估退化与恢复。
12. 关键指标:95/99百分位响应时间、吞吐 RPS、错误率(4xx/5xx)、CPU/内存、磁盘IO、网络带宽、丢包率。采集命令示例:top / htop、vmstat 1、iostat -x 1、sar -n DEV 1、tcpdump -i eth0 'tcp' -w cap.pcap(排查网络)。
13. 做故障切换:a) 单机下线测试,观察全局流量切换是否平滑;b) 模拟链路抖动(tc qdisc add dev eth0 netem loss 5% delay 100ms)并记录应用表现;c) 恢复后记录恢复时间和错误回落曲线。
14. 每次压测保存日志(wrk 输出、k6 输出、Prometheus指标快照)。分析要点:比较不同供应商在相同场景下的95/99p延迟、错误率与资源占用,生成表格并绘图(Grafana)。关注是否出现长尾延迟或错误突增。
15. 优化示例:a) 静态资源Cache-Control最大化并走CDN;b) 数据库增加读写分离与连接池设置(例如 MySQL max_connections);c) 使用连接复用(keepalive)与HTTP/2;d) 对高并发API做限流(漏桶/令牌桶)。
16. 选型依据:在目标并发下99百分位延迟低且错误率<1%,网络丢包低于0.1%,能快速扩容并且提供合理SLA与DDoS防护。若多个供应商相近,优先考虑网络邻近、Peering好、运维响应快的。
17. 问:我该用 wrk 还是 k6 来做台湾机房的高并发压测?
18. 答:两者可互补:wrk 适合短时间、大并发的粗粒度压测(快速找上限),命令简单;k6 支持脚本化场景、断言与输出到Prometheus,适合持续集成与细粒度场景。建议先用 wrk 做容量门槛测试,再用 k6 做业务流程和长时稳定性测试。
19. 问:如何判断台湾供应商的网络质量足够好?
20. 答:从多个地域发起 mtr 和 iperf3 测试,关注丢包率、平均延迟与抖动;查看对方是否有直连大陆/香港/亚太的Peering,询问带宽峰值与SLA;实践中以丢包<0.1%和稳定 RTT 为较好标准。
21. 问:如果多个机房表现相似,如何最终决定托管哪家?
22. 答:综合考虑长期成本(带宽、流量费用)、技术支持与响应时效、本地法律合规、扩容灵活性和额外服务(CDN、DDoS、备份)。优先选在高访问量下延迟稳定、能快速水平扩容且运维响应明确的供应商。