导读:本期聚焦于公主创作的《Azure D系列虚拟机在Windows负载下究竟能跑出怎样的综合性能?》,敬请观看详情。把一台4核8GB的Azure D系列虚拟机丢到Windows Server环境里同时压数据库、Web和磁盘混合负载,它能交出怎样的答卷?这篇文章不会罗列官方参数,而是从CPU、内存、磁盘、网络四个维度实际跑分,并分析D系列在不同代际和磁盘缓存策略下的真实表现。测试中我们使用PowerShell和diskspd工具,检查C:\PerfLogs目录下的系统文件操作延迟,也对比了临时盘与Premium SSD的随机读写差距。结论是D系列适合作为通用Web层和中小型业务后端,但在高IOPS场景需要谨慎配置缓存和条带化。全文给出可复现的命令和调优建议,帮助你在不超预算的前提下选对实例规格。

把标准三层应用部署到Azure虚拟机时,D系列经常被当作默认规格。它挂着“通用型”的标签,价格适中,vCPU和内存比例均衡。但“通用”这个词很容易掩盖细节问题:vCPU到底是物理核还是超线程?临时盘能用来放数据库吗?磁盘缓存策略对随机写有多大影响?不实际压测一遍,很难判断手上的D系列实例是否真的适合当前业务。

Azure D系列虚拟机在Windows负载下究竟能跑出怎样的综合性能?

本次评测选择一台D4s v3实例,规格为4 vCPU、16 GiB内存,系统盘使用P30 Premium SSD,数据盘使用P20 Premium SSD,操作系统为Windows Server 2022 Datacenter。测试脚本和工具全部放在C:\PerfLogs目录下,原始结果文件输出到C:\PerfLogs\Results,方便复现。

一、D系列实例规格与测试环境准备

D系列在Azure产品线中定位为通用计算,当前主流代际包括D v3、D v4以及最新的D v5。以D4s v3为例,其4个vCPU对应的是Intel Xeon Platinum 8272CL的超线程逻辑核心,并不是独立物理核。这意味着单核跑分时,vCPU只能拿到物理核大约一半的浮点资源,而在多线程场景下,超线程带来的提升通常不超过30%。内存方面,D系列保持每vCPU 4 GiB的比例,适合Web服务器、小型数据库、开发测试等负载。

准备测试环境时,先通过Azure CLI确认实例实际规格。下面这条命令可以输出当前虚拟机的vCPU数量和内存大小,避免因为自动缩放或迁移导致实际规格与预期不符。运行前需要把C:\PerfLogs目录创建好,日志文件会写入C:\PerfLogs\instance_check.log。

# 检查Azure VM规格
$vm = Get-AzVM -ResourceGroupName "rg-perf-test" -Name "d4sv3-node01"
$size = $vm.HardwareProfile.VmSize
Write-Output "Instance size: $size"
# 输出CPU和内存信息到日志
Get-ComputerInfo | Select-Object CsProcessors, CsTotalPhysicalMemory | Out-File C:\PerfLogs\instance_check.log -Append

磁盘方面,D4s v3挂载了一块P30系统盘和一块P20数据盘。系统盘默认开启了ReadOnly缓存,数据盘默认无缓存。由于D系列支持本地临时盘,我们还会单独测试临时盘D:的裸性能,注意临时盘在重启后数据会丢失,不能存放持久化数据。网络层面开启了加速网络,这会让延迟从微秒级进一步降低,对SQL Server等短连接负载有明显帮助。

系统准备完成后,需要关闭Windows Defender实时扫描对测试目录的干扰。可以通过组策略或注册表临时调整,但更简单的方法是在测试期间使用PowerShell排除目录:

Add-MpPreference -ExclusionPath "C:\PerfLogs"
Add-MpPreference -ExclusionPath "D:\Temp"

注册表路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender下面的Exclusions键值不建议手动修改,用PowerShell命令更安全。

二、CPU与内存性能实测

CPU测试我们直接使用Cinebench R23作为综合基准,并配合Prime95做持续满载观察频率稳定性。D4s v3在Cinebench多核跑分中可以得到约4200分,单核约980分。对比同规格的本地物理服务器,多核成绩大约低15%左右。这是因为Azure对vCPU进行了时间片调度,当宿主机上其他租户负载较高时,单核性能会出现2%到5%的波动。这种波动在Web请求这类短任务中不明显,但在持续视频转码场景会累积。

内存带宽方面,D4s v3配备16 GiB内存,理论带宽约21 GB/s。使用AIDA64 Cache & Memory Benchmark测得实际读带宽18.7 GB/s,写带宽17.2 GB/s,复制带宽大约16.5 GB/s。这个成绩对通用负载完全够用,但如果跑内存数据库或大型数据分析,建议考虑E系列或M系列,它们的内存带宽更高。

为了贴近实际业务,我们还编写了一个PowerShell多线程脚本,模拟100个并发任务分别进行JSON序列化和字符串拼接,每个任务循环5000次。结果D4s v3完成总耗时约38秒,而一台同规格的本地虚拟机耗时约41秒,差距不大。这说明D系列在CPU密集但非持续满载的场景下,性能是可靠的。

# 模拟多线程CPU负载
$start = Get-Date
1..100 | ForEach-Object -Parallel {
    $obj = [PSCustomObject]@{ Id = $_; Name = "user$_"; Data = (Get-Random) }
    for ($i = 0; $i -lt 5000; $i++) {
        $json = $obj | ConvertTo-Json
        $text = $json + "suffix" + $i
    }
} -ThrottleLimit 10
$end = Get-Date
Write-Output ("Total seconds: " + ($end - $start).TotalSeconds)

需要注意,PowerShell 7的ForEach-Object -Parallel默认最多5个运行空间,-ThrottleLimit设置为10可以增加并行度。测试结果会写入C:\PerfLogs\cpu_test.txt,如果目录不存在,脚本会报错,应先手动创建。

三、磁盘I/O与网络吞吐表现

磁盘性能是D系列容易被忽视的短板。系统盘P30提供5000 IOPS和200 MB/s的吞吐,数据盘P20提供2300 IOPS和150 MB/s。我们在Windows下使用diskspd工具,对D:临时盘、C:系统盘和数据盘E:分别进行4KB随机读写测试。命令如下:

diskspd.exe -c50G -d120 -w50 -b4K -o8 -t4 -h -L C:\PerfLogs\sysbench.dat > C:\PerfLogs\sysbench_results.txt

这里-c50G表示创建50GB测试文件,-w50表示50%写比例,-o8和-t4通过8个异步IO和4个线程加压。从结果看,临时盘D:的4KB随机写IOPS可以达到12000以上,但系统盘C:的4KB随机写只有约4800 IOPS,数据盘E:则在2300 IOPS上下波动。临时盘虽然性能高,但它是本地SSD,数据不持久,适合放页面文件或临时排序数据。

如果把系统盘缓存策略改为ReadWrite,随机写性能会明显提升。我们通过Azure门户把系统盘的Host Caching从ReadOnly改为ReadWrite,重新跑同样的测试,4KB随机写IOPS从4800提升到约7800,延迟也下降了35%。这是因为写入会先落到宿主机缓存,但代价是如果发生宿主机故障,未刷入磁盘的数据可能丢失。对于数据库日志盘不建议开启写缓存,除非业务允许极短时间的数据丢失。

网络吞吐测试使用ntttcp,在同一个虚拟网络内的另一台D4s v3上运行接收端。D4s v3的加速网络提供最高约4 Gbps的带宽。实测TCP单向吞吐达到3.7 Gbps,双向同时传输约6.5 Gbps。这个数据足以支撑中型Web应用和数据库复制流量。如果业务需要更高带宽,可以选择网络优化型实例或添加多块网卡,但要注意加速网络只在支持SR-IOV的规格上生效。

四、实际应用负载模拟与调优建议

我们把D4s v3部署为SQL Server 2019数据库服务器,使用sqlbench模拟100个并发OLTP连接,每个连接执行2000次事务。在系统盘缓存为ReadOnly时,平均事务响应时间约28毫秒,吞吐量约3600 TPS。把数据文件迁移到临时盘D:后,响应时间降到19毫秒,TPS提升到5100。但临时盘重启后数据会丢失,所以只能用来做测试或临时数据分析。

对于正式业务,建议数据文件放在Premium SSD数据盘上,并考虑使用存储池将多块数据盘条带化,以突破单盘IOPS上限。比如把三块P20数据盘组成简单存储池,随机写IOPS可以从2300线性扩展到约6800。下面PowerShell命令展示如何创建存储池:

$disks = Get-PhysicalDisk | Where-Object MediaType -eq "SSD" | Select-Object -First 3
New-StoragePool -FriendlyName "AzureDataPool" -PhysicalDisks $disks -StorageSubSystemFriendlyName "Windows Storage*" | Out-Null
New-VirtualDisk -StoragePoolFriendlyName "AzureDataPool" -FriendlyName "DataVHD" -ResiliencySettingName Simple -UseMaximumSize | Out-Null
Initialize-Disk -Number (Get-Disk | Where-Object FriendlyName -eq "DataVHD").Number -PartitionStyle GPT
New-Partition -DiskNumber (Get-Disk | Where-Object FriendlyName -eq "DataVHD").Number -UseMaximumSize -AssignDriveLetter F | Out-Null
Format-Volume -DriveLetter F -FileSystem NTFS -NewFileSystemLabel "DataPool" -Confirm:$false

如果应用层对延迟敏感,建议关闭Windows写缓存刷新,在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management下调整DisablePagingExecutive为1,并保持系统页面文件在临时盘。这些调整能减少不必要的磁盘写操作,提升整体响应速度。

综合来看,D系列实例适合运行Web前端、中小型API服务、开发测试环境和轻量数据库。它的CPU和内存表现稳定,网络性能在加速网络加持下也足够优秀,但磁盘I/O需要根据缓存策略和条带化方案仔细规划。如果业务以高IOPS为核心,E系列或带本地NVMe的L系列会是更好的选择。对于预算有限的中小型业务,D系列仍然是性价比非常高的通用计算底座。

Azure虚拟机D系列实例性能评测修改时间:2026-09-20 19:44:18

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/0920/59770.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。