1.
1.1 明确目标:要测什么?通常包括CPU性能(单核/多核)、内存带宽/延迟、磁盘吞吐与IOPS、网络延迟/带宽、HTTP服务在并发下的表现。
1.2 环境准备:准备两台或多台欧洲机房的实例(推荐不同运营商与不同子网),记录机型、CPU、内存、磁盘类型(SSD/NVMe/磁盘阵列)、操作系统与内核版本。
1.3 工具清单:安装常用工具:sysbench、fio、iperf3、ping/traceroute、curl/wrk/ab、stress-ng、htop、iostat、vmstat。示例安装命令(Debian/Ubuntu):sudo apt update && sudo apt install -y sysbench fio iperf3 wrk
2.
2.1 使用相同镜像与相同实例配置(尽量)来排除差异。记下启用的虚拟化类型(KVM/Xen/Baremetal)。
2.2 关闭不必要服务:sudo systemctl disable --now apache2等,确保测试期间干扰最小。
2.3 同步时间与网络:安装chrony/ntp并确认时钟同步,关闭防火墙或确保测试端口开放(如iperf3默认5201)。
3.
3.1 单核测试:sysbench 示例命令:sysbench --test=cpu --cpu-max-prime=20000 --num-threads=1 run。关注事件耗时与每秒事件数。
3.2 多核测试:调整 --num-threads 到 vCPU 数量,例如 --num-threads=8,判断线性扩展性和是否存在争用。
3.3 解析:查看平均执行时间与95/99百分位。若多核效率低,考虑超售、cpu steal(查看top中%st或/proc/vmstat)问题。
4.
4.1 使用sysbench内存测试:sysbench memory --memory-total-size=4G run,或用stream基准(如果可用)测内存带宽。
4.2 大页与缓存:检测HugePages配置是否影响性能,查看 /proc/meminfo 中 HugePages_* 字段。
4.3 解析:注意带宽瓶颈通常出现在高并发内存密集型应用,调整应用的内存使用策略或选择更大带宽实例。
5.
5.1 基本测试(fio):读取/写入随机IOPS和顺序吞吐:示例随机读写测试命令:
fio --name=randrw --ioengine=libaio --rw=randrw --bs=4k --numjobs=4 --size=2G --runtime=120 --group_reporting
5.2 顺序吞吐测试:fio --name=seqrw --rw=readwrite --bs=1M --iodepth=16 --size=5G,监测带宽与延迟。
5.3 解析与注意:关注lat (平均与99th)、iops、bw。若延迟高且IOPS低,可能是共享存储或网络存储(例如Ceph/NFS)导致。
6.
6.1 基础延迟:使用ping和mtr/traceroute记录延迟与路径。示例:ping -c 20 target.ip。
6.2 带宽测试:使用iperf3,在一台作为server:iperf3 -s,另一台作为client:iperf3 -c server.ip -P 4 -t 60(-P 并发流数)。
6.3 HTTP并发压力:用wrk对Web服务压测:wrk -t4 -c200 -d60s http://your.service/,查看请求每秒与延迟分布。
7.
7.1 数据库基准:对MySQL使用sysbench oltp_read_write脚本,命令示例:
sysbench oltp_read_write --db-driver=mysql --mysql-host=... --mysql-user=... --tables=10 --table-size=100000 prepare,然后 run。
7.2 应用重现:部署应用镜像并用wrk/jmeter做端到端压测,记录CPU、IO、网络瓶颈点。
7.3 分析瓶颈:结合 sar/iostat/top 等定位是 CPU、内存、磁盘还是网络成为瓶颈。
8.
8.1 OS 层面:调整sysctl参数(示例):
sudo sysctl -w net.core.somaxconn=10240、net.ipv4.tcp_tw_reuse=1等,并持久化到 /etc/sysctl.conf。
8.2 应用层面:开启连接池、减少同步写频率(数据库),使用合适的 IO 调度器(noop 或 mq-deadline)针对NVMe/云盘调优。
8.3 监控:部署Prometheus+Grafana监控:收集CPU steal、disk latency、network drops 等关键指标,形成回归对比。
9.
9.1 评分维度:按响应延迟(P95/P99)、吞吐(QPS/IOPS)、稳定性(抖动)给出权重评分。
9.2 选择建议:开发/测试环境可优先使用成本较低但低延迟稳定的机型;生产数据库推荐本地NVMe或专用磁盘方案。
9.3 备选厂商:在欧洲常见选择包括 Hetzner(性价比高)、OVH(网络覆盖)、Scaleway(裸金属/ARM选项)、DigitalOcean / AWS / GCP(企业可用性与生态)。
10.
问:如何判断是虚拟化超售导致性能波动?
答:观察CPU steal(top 或 /proc/stat 中的steal时间),若 %st 非常高且在高负载时飙升,或磁盘延迟在短时间内剧增且与宿主机负载相关,说明可能超售。可通过切换不同机型或同一厂商不同机房做对比验证。
11.
问:测试时如何保证结果可复现?
答:保持镜像/内核一致、关闭不必要服务、在相同时间段重复测试并取平均/中位数、记录环境元数据(实例ID、IOPS承诺、共享类型),并用相同脚本自动化执行(例如用Ansible或bash脚本)。
12.
问:面向开发者,我该如何快速选择欧洲云主机?
答:先明确需求(低延迟交互、批处理、数据库),然后按预算筛选:需高IOPS选择本地NVMe或专盘;预算敏感可选Hetzner;若需全球分布与托管服务优先公有云(AWS/GCP/Azure)。最终用本文提供的基准脚本在目标机房做一次“最小可复现”测试再下决定。