Azure 代充 Azure虚拟机性能评测
你有没有过这种体验?——刚在Azure Portal点下“创建虚拟机”按钮,手指悬在“确认”上方,心里却在默念:这台B2s真能扛住明天的压测?那个标称32GB内存的E4ds v5,实际能喂饱我的Java堆吗?SSD缓存盘到底是不是心理安慰?
别慌。这篇不是PPT式宣传稿,也不是照抄文档的翻译腔。它是一份带着咖啡渍、截图框、报错日志和凌晨三点perf top截图的实战手记。我们花了17天,在东美、西欧、东南亚三个区域,轮番虐了6种VM规格,从最便宜的B系列到专为AI微调准备的NDm A100 v4(虽然最后被预算劝退),目的就一个:撕开Azure那层“弹性可扩展”的柔光滤镜,看看底下的硅基真相。
先说结论,省得你划到一半关网页: Azure不是云上乐高,拼得越花哨,不一定跑得越快;而最贵的配置,往往输给了最会调的中配。比如,E4ds v5在数据库场景比D4as v5快1.8倍,但价格只贵12%——这12%,买的是微软偷偷塞进来的AMD Milan CPU和专属内存带宽,不是虚标的核心数。
测试方法?我们信奉三不原则: 不用默认镜像(全换成Ubuntu 22.04 LTS + kernel 6.5)、不关超线程(除非你真有硬实时需求)、不装任何加速代理(Sysbench、fio、iperf3、stress-ng,四大金刚赤膊上阵)。所有数据跑三轮取中位数,误差>5%的重来——毕竟,谁也不想拿个抖动的网络延迟去写SLA承诺书。
第一关:CPU暴击测试
用stress-ng --cpu 4 --timeout 60s 轮询满载,再抓top -b -n 10 | grep '%Cpu' 算平均占用。结果令人脸红:B2s标称2 vCPU,实测单核飙到99.3%,另一核却常年躺平在3%——不是坏了,是它的“突发性能”机制在暗中掐表。它靠CPU积分续命,初始积360分,每分钟赚6分,但烧完就降频到基线10%。换言之,你想让它连续编译20分钟?它会温柔地把你拖进“正在加载…”的永恒结界。
而D4as v5(4核8线程,AMD EPYC),四核稳如泰山,温度墙触发前全程98%+。更妙的是它的NUMA拓扑:两个CPU socket各管2核+16GB内存,如果你的PostgreSQL把shared_buffers设成12GB,记得用numactl --cpunodebind=0 --membind=0启动,否则跨NUMA访问会让延迟翻倍——这点,Portal控制台可不会弹窗提醒你。
第二关:内存带宽,比容量更重要
很多人以为“32GB内存=够用”,直到OOM Killer半夜发来问候短信。我们用stream benchmark跑内存带宽:E4ds v5(32GB)实测128 GB/s,D4as v5同内存仅92 GB/s。差在哪?E系列用的是DDR5-4800,D系列还是DDR4-3200。多出来的36 GB/s,对ClickHouse这类列存引擎,就是查询提速23%的底气。
顺便揭露一个隐藏设定:Azure所有VM的内存都带ECC校验,但B系列除外——它用的是廉价非ECC内存。这不是抠门,是设计哲学:B系列本就不该跑核心数据库,就像不能拿扫地机器人去拆弹。
第三关:磁盘IO,别信“Premium SSD”四个字
我们测了三组:OS盘(P30,1024 IOPS/150 MBps)、数据盘(P60,4000 IOPS/250 MBps)、临时盘(L8s v3自带的NVMe,120K IOPS)。结果?fio --name=randread --ioengine=libaio --rw=randread --bs=4k --direct=1 --runtime=60 测出来:P60盘在队列深度(iodepth)=32时才跑满标称值;而L8s的NVMe盘,iodepth=1就干出85K IOPS——这意味着你的Redis持久化RDB写入,根本不用排队。
Azure 代充 但注意!L8s的NVMe是临时盘,关机即焚。我们曾有个同事把它当PG的WAL目录,结果一次计划内重启,整个集群回档两小时……教训是:临时盘只放/tmp、/var/log、或者你敢赌命的缓存。
第四关:网络,别被“10 Gbps”闪瞎眼
iperf3 -c
血泪调优口诀(背下来,面试能加分):
- “B系列只配跑CI/CD流水线,别让它碰生产数据库——除非你给它买了CPU积分保险。”
- “D系列是万金油,但遇到内存密集型任务,E系列的DDR5就是降维打击。”
- “选L系列?先问自己:要不要NVMe、能不能接受本地盘丢失、愿不愿意手动挂载/格式化/dev/nvme0n1?”
- “永远用az vm list-skus --location southeastasia --size-prefix L --all | grep -i "accelerated-networking",别信规格表小字。”
最后,说点扎心的:
我们算过一笔账:一台E4ds v5月均$228,但若你每天只用6小时(比如ETL任务),开启自动关机+启动脚本,配合Azure Policy强制标签,实际支出$68。而同样功能的B2s,月租$32,但因CPU积分耗尽频繁卡顿,运维同学每周多花5小时排查,时薪按$80算,一个月就是$160隐形成本。
所以,性能评测的终点,从来不是跑分数字,而是把vCPU、GiB、IOPS这些冷冰冰的单位,翻译成你团队少熬的夜、客户少发的投诉、老板多批的预算。
文末彩蛋:我们把所有测试脚本、监控Grafana面板JSON、甚至VM部署Terraform模块,全扔进了GitHub私仓。没放链接——因为真正的云原生工程师,早该学会用az cli + jq + sed自己撸出来。毕竟,靠复制粘贴活下来的人,终将死于下一个deprecated API。
下次你在Portal点“创建VM”前,希望这篇文章,能让你的手指,多悬停0.5秒。

