Sql server 我怎样才能找到为什么一些经典的asp页面会随机花费很长时间来执行?
我正在开发一个相当大的经典asp/SQLServer应用程序。 几个月前推出了一个新版本,其中包含许多新功能,我肯定在某个地方有一个非常严重的bug:一些非常基本的页面随机执行需要很长时间 一些线索: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
- 它不是数据库:当我运行查询分析器时,它不会检测到任何长时间运行的查询
- 启动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上不是默认设置,以减少内存碎片
- (那里有一个dll,你可以用它来打开LFH,但是这篇文章是用法语写的。你现在必须学习我们美丽的语言!)
您能否从自己的客户端重现问题?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。谢谢你的主意。我检查了服务器,但服务器端调试已关闭。