为什么 SQL Server 限制来自 IIS 的一个数据库的速度

为什么 SQL Server 限制来自 IIS 的一个数据库的速度

我在使用 SQL 服务器(或 IIS,但我很确定是 SQL)时遇到了问题

我之前曾发布过一个更模糊的问题,但它仍然在发生,而且我有一些更详细的信息。

上一篇

问题: 当 IIS 网站尝试访问 SQL Server 2008r2 到网站 (iis 7) 时,数据传输速度似乎受到限制。速度似乎被限制为每秒 1Mb。

如果我重新启动数据库服务或使数据库脱机,这个问题就会自行解决,但我不想每周都这样做。

一些故障排除:

  • 从同一台机器传输文件没有问题,所以我不认为是网络问题。
  • 我可以从本地 SQL 管理工作室连接,并查询相同的数据库
  • 与 SQL 服务器位于同一 IIS 服务器上的其他网站不会与其他数据库通信
  • 将我们的开发服务器指向有问题的实时数据库也存在同样的问题
  • 获取数据库副本并将其放在另一个 SQL 上不会出现问题

因此,我认为我已经将其缩小到 SQL 中的一个数据库似乎在将数据传输到 IIS 时出现间歇性故障。

  • 知道是什么原因造成的吗?
  • 为什么正常工作了几天就出现这种情况了?
  • 我应该从哪里开始排除故障?

编辑 1:新信息 我做了更多的测试,似乎是一个特定的存储过程,只是有时,只使用 10% 的网络速度。

当我摆弄 SP 时,除了“调整它”之外什么都不做似乎都无法打破瓶颈,因此它又开始正常工作了。

救命,这让我发疯了!

谢谢

答案1

将我们的开发服务器指向有问题的实时数据库也存在同样的问题

这表明这个问题与该特定 Web 应用程序有关,因为您说其他 Web 应用程序没有这个问题。除非其他 Web 应用程序使用完全不同的数据库数据,否则性能至少应该相当。

您要做的是,在数据库上运行服务器端跟踪,并仅捕获来自该服务器的每个 SQL 调用的持续时间和行集大小 - 并可能从另一台服务器捕获每个 SQL 调用的持续时间和行集大小以进行比较。

然后,您可以根据 perfmon 捕获的 SQL 服务器和 IIS 计算机的数据绘制此图表 - 是的,SQL Server Profiler 完全支持这种情况 :)

这将为您输入的所有数据产生可缩放、可滚动和可点击的图表;有关如何设置的详细信息,请参阅 SQL Server Profiler 帮助 (BOL)。

答案2

如果问题似乎出在单个 SP 上,而“调整”它似乎可以解决问题,那么问题可能出在编译的执行计划上——它可能针对一组参数进行了编译,这导致它对于其他更常见的参数集运行得更慢。

下次遇到问题时,请尝试运行dbcc freeproccache并查看是否能解决问题。如果能,您可以WITH RECOMPILE向 SP 本身添加提示以停止缓存计划。

相关内容