Sql server 我怎样才能找到为什么一些经典的asp页面会随机花费很长时间来执行?

Sql server 我怎样才能找到为什么一些经典的asp页面会随机花费很长时间来执行?,sql-server,performance,asp-classic,iis-6,freeze,Sql Server,Performance,Asp Classic,Iis 6,Freeze,我正在开发一个相当大的经典asp/SQLServer应用程序。 几个月前推出了一个新版本,其中包含许多新功能,我肯定在某个地方有一个非常严重的bug:一些非常基本的页面随机执行需要很长时间 一些线索: 它不是数据库:当我运行查询分析器时,它不会检测到任何长时间运行的查询 启动IIS诊断工具时,reqviewer显示请求处于“正在处理”状态 这可能发生在任何页面上 我不能轻易复制它,它完全是随机的 有一个“很长时间”的想法:今天早上我有一个页面需要5分钟以上才能执行,而正常情况下,它应该在不到1

我正在开发一个相当大的经典asp/SQLServer应用程序。 几个月前推出了一个新版本,其中包含许多新功能,我肯定在某个地方有一个非常严重的bug:一些非常基本的页面随机执行需要很长时间

一些线索:

  • 它不是数据库:当我运行查询分析器时,它不会检测到任何长时间运行的查询
  • 启动IIS诊断工具时,reqviewer显示请求处于“正在处理”状态
  • 这可能发生在任何页面上
  • 我不能轻易复制它,它完全是随机的
  • 有一个“很长时间”的想法:今天早上我有一个页面需要5分钟以上才能执行,而正常情况下,它应该在不到100毫秒的时间内返回到客户端
  • 该应用程序可以处理相当大的文件上传和下载(最大为2GB)。这也可以通过使用SoftArtisan FileUp的经典asp脚本来处理。不过,不要认为这会导致问题,我们已经上传了很长一段时间了
  • 我在两个不同的服务器上遇到了这个问题(在两个不同的位置,使用不同的数据集)。一个运行良好的SQL Server 2000应用程序,另一个运行SQL Server 2005。在这两种情况下,web服务器都是IIS 6
你知道问题是什么或如何解决这类问题吗

谢谢

塞巴斯蒂安


编辑:

问题来自内存碎片。一些asp页面用于从服务器下载文件。文件大小可以从几kb到超过2GB。这些大小的变化会导致内存碎片。asp页面也可能需要相当长的时间来执行(用户下载页面的时间减去IIS级缓存中的内容),这对于应该快速执行的服务器页面来说并不是真正的标准

这就是我为改善现状所做的:

  • 在会话关闭的情况下,将所有下载逻辑放在单个asp页面中
  • 这使我能够将该asp页面放在一个特定的池中,该池可以经常循环使用(现在下载将不再干扰应用程序的其余部分)
  • 启用LFH(低碎片堆),这在Windows 2003上不是默认设置,以减少内存碎片
LFH的参考资料:

  • (那里有一个dll,你可以用它来打开LFH,但是这篇文章是用法语写的。你现在必须学习我们美丽的语言!)

您能确定这是所有页面的问题还是页面的公共子集的问题吗

如果一个子集检查这些页面的共同点,例如,它们都使用特定的COM dll,那么其他页面则不会

这个问题是影响多个客户机还是只影响少数客户机

查看特定浏览器操作系统版本是否存在问题

这是公共的还是内部网


您能否从自己的客户端重现问题?

SQL Server上是否有可能出现一些全文搜索查询

因为如果是这样,并且SQL Server无法访问internet,则在尝试检查证书时,可能会每隔几个小时左右造成45秒的延迟(尽管这不适用于SQL Server 2000)


有关我所指内容的详细说明,请参见。

您的web服务器上是否运行其他应用程序?如果是这样,您的应用程序池是否与其他应用程序池存在问题?如果是这样,请尝试为其创建专用的应用程序池。可能其他应用程序中有一个出现了问题,对您的应用程序产生了负面影响。

我在一个经典的ASP+ajax应用程序中注意到了同样的问题。使用计时器,我将页面加载时间定为153毫秒,但在firebug瀑布图中,它随机显示为3.5秒。计时器输出在响应上,瀑布图表示Firefox正在等待服务器的响应。因为瀑布图也显示了响应,所以我可以将瀑布图与计时器进行比较,并且“每隔一段时间”会出现巨大的差异。

需要注意的一点是,如果在IIS中启用了服务器端调试,web服务器将以单线程模式运行

因此,如果您尝试加载一个页面,而其他人同时点击了该url,您将在他们后面排队。加载页面似乎需要很长时间,但这仅仅是因为服务器在单个文件行中分配页面请求,而有时您并不在行的最前面


您可能在调试时打开了此选项,但在生产时忘记关闭它。

对于页面子集来说,这是个好主意。我将与我的用户一起看看是否可以将其缩小到页面的子集。复制的问题在于它完全是随机的。你会工作一段时间,突然砰的一声,好像IIS被挂了几分钟。如果您启动另一个浏览器会话,请转到完全相同的页面,您将很快得到结果。所以它看起来不像是特定于浏览器操作系统版本的。它是公开的,我不能复制它,因为它是或看起来是随机的…我找不到任何规则。我终于设置了一个任务,每天晚上2点重置IIS ans SQLServer,这似乎就完成了。。。现在,但我假设当负载增加时,可能会再次出现。我可能会联系微软PSS然后。。。谢谢你的好线索!有全文搜索查询,但sqlserver可以访问internet。谢谢你的主意。我检查了服务器,但服务器端调试已关闭。