如果磁盘未过度使用,什么可能导致高 iostat 等待?

如果磁盘未过度使用,什么可能导致高 iostat 等待?

我在 GCP 上运行一个数据库。偶尔,它会在几分钟内变得非常慢(例如平均语句执行时间激增 10 倍或更多)。缓慢与输出的增加相关awaitiostatsystem.io.await图中的指标)。通常约为 500µs,但在中断期间,它会激增至 20ms。

我的第一个猜测是,这表明磁盘已饱和,但{r,w}{,kb}_s都在实例可以正常处理的正常范围内(正常await):

指标

我的第二个猜测是,也许我们在持久磁盘上有一个嘈杂的邻居,但我将数据库故障转移到另一个虚拟机,问题仍然存在。

还有什么原因可能导致峰值await?此外,哪些工具或测试最适合诊断这种情况?

答案1

您使用的命令和工具非常适合调试物理磁盘中的问题,但这里的问题是云中的结构完全不同。GCP 上的持久磁盘实际上并不是真正的磁盘——它是一个使用大量物理设备的虚拟卷。这些设备使用 Google 网络和其他结构来工作。以下视频更好地解释了它的工作原理:

https://youtu.be/jA_A-OXsIss?t=262

因此,有许多因素决定了存储卷的性能。根据官方文档,您可以在云监控,Google Cloud 的集成监控解决方案。

你可以检查一下文档它可以帮助您检查磁盘性能。

如果您的工作负载具有突发性 I/O 使用模式,则预计会看到与读取或写入字节数的突发相对应的受限制字节数的突发。

数据库是突发工作负载的常见示例。数据库往往会出现短暂的 I/O 操作微突发,这会导致队列深度. 更高的队列深度可能导致更高的延迟,因为更多未完成的 I/O 操作请求正在队列中等待。

对于云中存储涉及的所有系统,如果您想了解有关性能发生情况的更多详细信息,我建议您联系 GCP 支持,他们应该有更多工具来解决您的问题。

如果您有免费试用帐户,您可以通过以下方式获得聊天支持 控制台支持中心,您还可以访问以下关联了解更多信息。

或者,你可以签约支持计划以便通过电话和聊天获得技术支持案例。

答案2

更新:直到现在我才注意到你正在使用基于云的存储。我注意到的仅适用于物理磁盘或结构。

您是否检查过 IOPS?iostat 1将为您提供tps以下列每秒传输次数(手册页说这是每秒发送给设备的传输次数,因此非常接近 IOPS)。也许数据库每秒向磁盘发送数百次操作,这导致了高await时间。

相关内容