J1m*_*mmy 1 performance sql-server optimization sql-server-2016 query-performance
我有 2 个虚拟机:
VM1 - 8 核 32GB 内存
VM2 - 8 核 64GB 内存
我使用 SSIS 目录在两个 VM 上同时运行相同的进程,所有进程都在它自己的 VM 上执行,因此没有信息通过网络传输..Aaa我发现这些进程的加载时间在 VM2 上相当慢。
加载:
VM1- 15m
VM2- 45m
我检查了一些性能指标并进行了一些基本测试...在加载期间我可以看到 Network I/O Waits
VM1- 600 毫秒/秒
VM2- 750 毫秒/秒
我假设这个网络 I/O 等待来自 SSIS,因为 SSIS 正在对 SQL Server 执行查询,然后批量插入信息,等待统计告诉我这两种情况的等待类型都是 ASYNC_NETWORK_IO。
我还使用 SP_SPACEUSED 进行了测试,以查看同时插入两个表中的行数,结果不是非常准确,但 VM1 几乎使插入的行数翻了一番......
我错过了任何进一步的测试吗?你想到的其他检查吗?
您在虚拟化环境中运行,因此仅仅因为服务器具有更多虚拟 RAM 或更多 vCPU 并不意味着它“更快”(如您所称)。
虚拟化层抽象了几个因素,您需要了解甚至对它们进行基准测试。
例如,无法保证 vmdk 下的存储接近可比性,因此您需要对存储进行基准测试并在物理级别对其进行监控。
底层物理 CPU 也可以产生巨大的差异。物理处理器有多快?CPU 在虚拟化层中是否过度使用(即每个物理核心分配了更多的 vCPU)等。
您可以查看 VMWare 中的 CSTP 或 RDY 值等。
如果您不了解底层硬件和虚拟化配置,那么调用一台服务器的速度确实不可能比另一台更快,因为它拥有更多的虚拟资源。
你可以检查的一些事情是
我希望其中一些指针可以帮助您进一步排除故障,但是没有任何关于底层硬件的确凿证据,比较虚拟资源配置以确定哪个 VM 应该“更快”确实没有任何意义
话虽如此,您可能会通过查看 perfmon 计数器来确定磁盘延迟或 cpu 负载,或者甚至使用一些 VMWare 计数器(例如以 MHz 为单位的有效速度或被盗时间),并且您可以从等待统计信息中获得一些信息,但我仍然认为访问有关 VM 配置和底层硬件的一些信息是必不可少的。
如果可以,请对底层硬件进行基准测试。