性能 Azure 磁盘,平均队列长度较高

性能 Azure 磁盘,平均队列长度较高

我正经历一场典型的开发人员与系统管理员之间的斗争,我说共享 SQL 服务器的磁盘存在 IO 问题,而系统管理员告诉我容量根本没有达到。

我能指出的一件事是,SQL 服务器上的平均磁盘队列长度非常高。平均队列长度平均为 5,经常会飙升至 10 到 15。它从未低于 2.5

系统管理员告诉我这不是问题,因为磁盘是 6 个磁盘的条带,如果队列长度高于主轴数量的两倍,则队列长度在定义上是不好的。所以他的公式是 6*2=12,低于平均值 5。

他的推理正确吗?我们可以将 Azure 磁盘视为主轴吗?最小 5 的恒定平均队列长度不是一个指示吗?

编辑:事实证明,磁盘是一个巨大的瓶颈。将数据库移至单独的数据库服务器后,应用程序再次顺利运行。

答案1

您太关注单一指标了!

诊断单个组件的瓶颈很少能用一个计数器给出完整的解释
很少几个 伟大的 指南使用 perfmon 诊断 SQL Server 上的性能问题。

不幸的是你的管理员可以没错,您选择的计数器确实取决于底层硬件。但是我找不到任何文档说明 Azure 基于 6 磁盘 raid。所以也许应该关注其他计数器?

  1. 平均磁盘秒/读取
  2. 平均磁盘秒/写入
  3. 磁盘读取/秒
  4. 磁盘写入/秒

但作为最后的建议。如果你唯一的指示是平均磁盘队列长度,你的系统管理员可能是正确的。
如果你确定这是磁盘问题,你可以随时尝试创建儲存空間。

答案2

对 Azure 来说还很陌生,但这是我的建议:

您跨越的 Azure 磁盘越多,性能就越好,这是事实。不过我不确定这个等式。无论如何,我认为你选错了方向……

Azure 对 IOPS 和每秒最大读/写次数等指标施加了人为限制,因此队列长度只是您需要查看的几个指标之一。

这个问题和你的类似。它对Azure SQL 性能文章也是如此。确保遵循 Microsoft 的最佳实践可以帮助您提高性能。

我不确定进一步增加您使用的磁盘数量是否有帮助。据我所知,增长不是线性的。您可能希望 6 个磁盘的 IOPS 为 3000(6x500),但可能更接近 2000。

迁移到 DS (SSD) 层可能是从单个 VM 获得所需性能的唯一方法。以下是 Azure 实例限制的简要说明:https://azure.microsoft.com/en-gb/documentation/articles/virtual-machines-size-specs/

最后,提高任何应用程序性能的最佳方法是减少对 I/O 的依赖。尽可能使用缓存。您可以尝试使用具有更多内存的实例。

相关内容