小编Ale*_*son的帖子

诊断 VM 上缓慢的数据处理

我们正在尝试从 VM 内部诊断显然运行缓慢的 VM。

情况:

  • 我们在 6 核 12GB 虚拟机上运行的 Windows Server 2008R2 上有一个 IIS 托管的应用程序。
  • 我们有一个在 SQL Server 2008R2 SP3 集群上运行的数据库(16+ 核,>16GB RAM)
  • 应用程序正在处理针对此数据库的消息队列。处理主要包括查询/获取和更新,每条消息可能有十几个往返。有限数量的线程 (3) 分配给此工作负载,这是同步的,因此线程确实会阻塞数据库响应。
  • 数据库显然负载很轻:只有最大 CPU 负载的百分之几。
  • 据我们所知,数据库和 VM 主机都在同一个数据中心。

数据库报告在等待异步网络 IO 上花费了大量时间,即。等待应用程序消费数据。应用程序 VM 显然也是轻载的:~20% CPU。基础设施不归我们所有,我们唯一的访问权限是通过 RDP 访问虚拟机,以及通过 SQL Management Studio 访问数据库集群。我们没有足够的权限来运行分析器,但我们确实记录了数据库和 VM 的性能计数器。

几周前,消息处理率突然下降了 70-80%。据我们所知,没有任何变化:应用程序没有被修改或重新配置,性能计数器没有指示负载特性的任何变化。基础设施的所有者表示,他们最终没有任何改变。

作为重新启动过程的一部分,应用程序必须重新加载其消息队列。这涉及对几十万行的简单选择,然后将这些行读入内存结构。数据库在几秒钟内为 SELECT 提供服务,但随后在读取结果集的应用程序上等待了大约 10 分钟。这是一个单线程操作,涉及非常简单的反序列化,在此硬件上花费的时间不应超过几分钟。

我目前的理论是网络延迟在某种程度上增加了,但 ping 只报告“<1ms”,而且我们在任何情况下都没有基线。hrPing 报告从应用程序服务器到数据库的时间在 0.5 到 2 毫秒之间。

另一种可能性是 VM 的实际 CPU 容量以某种方式减少了,但我预计这会表现为“明显”负载的增加。

我们还有其他调查途径吗?

windows-server-2008 performance sql-server vmware-esxi

4
推荐指数
1
解决办法
962
查看次数