代码之家  ›  专栏  ›  技术社区  ›  Sébastien Nussbaumer

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

  •  3
  • Sébastien Nussbaumer  · 技术社区  · 16 年前

    我正在开发一个相当大的经典asp/SQLServer应用程序。

    一些线索:

    • 它不是数据库:当我运行查询分析器时,它不会检测到任何长时间运行的查询
    • 启动IIS诊断工具时,reqviewer显示请求处于“正在处理”状态
    • 这可能发生在任何页面上
    • 有一个“很长时间”的想法:今天早上我有一个页面需要5分钟以上才能执行,而正常情况下,它应该在不到100毫秒的时间内返回到客户端。
    • 该应用程序可以处理相当大的文件上传和下载(最大为2GB)。这也可以通过使用SoftArtisan FileUp的经典asp脚本来处理。不过,不要认为这会导致问题,我们已经上传了很长一段时间了。

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

    谢谢


    编辑:

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

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

    • 在会话关闭的情况下,将所有下载逻辑放在单个asp页面中
    • 这使我能够将该asp页面放在一个特定的池中,该池可以经常循环使用(现在下载将不再干扰应用程序的其余部分)

    5 回复  |  直到 14 年前
        1
  •  2
  •   Idealist    14 年前

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

        2
  •  1
  •   AnthonyWJones    16 年前

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

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

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

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

    这是公共的还是内部网?

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

        3
  •  1
  •   Çağdaş Tekin    16 年前

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

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

    对于我所指内容的详细解释, read this .

        4
  •  1
  •   squillman Johnny Fitz    16 年前

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

        5
  •  1
  •   Michael Pryor    14 年前

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

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

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