0

我想分解从客户端到 Analysis Services 并返回的往返 MDX 查询的性能。特别是,我希望识别/区分单个查询并记录每个查询所花费的时间:

  • 从客户端到 IIS 的 XMLA over HTTP 消息
  • 从数据泵到分析服务的 TCP/IP 上的 XMLA 消息
  • Analysis Services 对数据泵的响应
  • IIS 对客户端的响应

我对其他有助于识别查询生命周期中的瓶颈的数据点持开放态度。

我的公司测试了多种软件,包括:定期 SSAS DMV 数据收集、PerfMon、Flight Recorder、Splunk 和 SQL Sentry。我们很难把它们联系在一起。

4

1 回答 1

1

您遇到的主要问题之一是时间上可能存在重叠:IIS 中的 msmdpump 可以在从 http 请求中获得 XMLA 的前几个字节后立即开始将第一个字节发送到 AS 服务器,反之亦然反之亦然,它可能会在 AS 服务器响应的前几个字节可用时立即开始发送消息。

实际上,msmdpump 和 AS 服务器之间的通信是在 msmdpump 和客户端之间发送的 XML 的二进制版本,因此很容易在不知道消息后面的信息的情况下进行转换。有关该协议的一些详细信息,请参阅http://sqlblog.com/blogs/mosha/archive/2005/12/02/analysis-services-2005-protocol-xmla-over-tcp-ip.aspx

为了跟踪时间,我的方法是低级的:我会在运行 IIS 的计算机上运行 Wireshark ( http://www.wireshark.org/ ),并仅过滤到客户端和 IIS 之间的 http 帧以及IIS 计算机和 AS 服务器之间的帧。帧的内容或多或少无关紧要,但您可以看到请求的第一个和最后一个包的时间戳,从而粗略估计不同通信的持续时间。并且将所有网络流量记录留在一台计算机上,避免了让所有计算机的时钟完全同步的需要。

于 2013-11-05T22:32:38.487 回答