3

我正在开发一个相当大的经典 asp / SQL Server 应用程序。几个月前推出了一个新版本,其中包含许多新功能,我一定有一个非常讨厌的错误:一些非常基本的页面随机需要很长时间才能执行。

一些线索:

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

知道问题是什么或如何解决这类问题吗?

谢谢。

塞巴斯蒂安


编辑 :

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

这就是我为改善事情所做的:

  • 将所有下载逻辑放在一个单独的 asp 页面中,并关闭会话
  • 这使我可以将该 asp 页面放在可以经常回收的特定池中(现在下载不会再干扰应用程序的其余部分)
  • 开启 LFH(Low Fragmention Heap),在 Windows 2003 上默认不开启,以减少内存碎片

LFH 的参考资料:

4

5 回答 5

2

我在我从事的经典 ASP + ajax 应用程序上注意到了同样的事情。使用计时器,我将页面加载时间设置为 153 毫秒,但在萤火虫瀑布图中它随机显示为 3.5 秒。Timer 输出在响应中,瀑布图声称它是 Firefox 等待来自服务器的响应。因为瀑布图也显示了响应,所以我可以将瀑布图与计时器进行比较,并且“每隔一段时间”存在巨大差异

于 2011-02-03T23:46:53.733 回答
1

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

如果一个子集检查这些页面的共同点,例如它们都使用特定的 COM dll,而其他页面则没有。

此问题会影响多个客户端还是仅影响少数几个?

IOW 是否存在特定浏览器操作系统版本的问题。

这是公网还是内网?

你能从你拥有的客户那里重现这个问题吗?

于 2009-04-21T07:42:09.600 回答
1

SQL Server 上是否有可能进行一些全文搜索查询?

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

有关我所指内容的详细说明,请阅读此

于 2009-04-30T15:00:30.377 回答
1

您的 Web 服务器上是否正在运行其他应用程序?如果是这样,您的问题是否与他们中的任何一个在同一个应用程序池中?如果是这样,请尝试为它创建一个专用的应用程序池。也许其他应用程序之一出现问题并对您的应用程序产生不利影响。

于 2009-04-30T15:06:25.043 回答
1

需要注意的一件事是,如果您在 IIS 中打开了服务器端调试,则 Web 服务器将以单线程模式运行。

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

您可能已将其打开以进行调试,而忘记将其关闭以进行生产。

于 2011-02-04T14:35:45.590 回答