传统ASP中的内存监视/泄漏/问题

问题描述:

我被要求查看已经放慢到停止点的服务器。服务器上运行着数百个经典ASP站点,并且在检查了一些代码后,我发现有很多ADODB.Recordset(加上其他)对象被打开,使用但从未销毁(设置为Nothing)的实例。我明白,可能还有其他问题,我还没有发现...传统ASP中的内存监视/泄漏/问题

最初的代码开发人员拒绝承担任何责任,因为他们声明,在网站初始部署后,他们多年来一直工作得很好。

不幸的是,当天没有足够的时间来检查所有网站上的所有代码。因此,是否有任何可用的应用程序可以监视内存使用情况,泄漏情况或任何可能有助于诊断造成服务器停机的因素?

原来的网站是对Win2003的,IIS6,但现在已经被转移到Win2012,IIS8。现在新服务器上也出现了放缓现象,所以我相信它不是硬件故障。

任何建议,将不胜感激。请注意,我用ASP.NET标记这也为我欣赏现在的使用.NET最经典的ASP开发,但可能能够提出他们的经验的东西......

+0

可以将应用程序池配置为一旦遇到特定内存阈值就重新启动。这至少会让事情有点活泼,但它会不时重置你的网站。对于调试,看看IIS调试诊断http://support.microsoft.com/kb/919790 – 2013-03-07 15:44:59

比去到每个文件和手动设置其他每个Recodset,Connection,Command等对象什么也没有,我不认为你能做的事情很多。

我在几年前有过类似的事情,而我唯一的解决方案就是上述。

对不起!

这能对所有打开的连接,使高负荷下的问题,但即使早在ASP经典有一些不错的垃圾回收。当页面完成处理时,剩余的对象和连接会自动关闭。另请参阅:https://*.com/a/1613337/25163

我过去曾使用原始的ASP Profiler来查找我仍然维护的ASP/VBScript网站中的特定瓶颈位置。我会查看具有有问题的加载时间的任何特定页面的日志,并首先针对这些页面。

如果你不已经有一个程序,我用一对夫妇的项目SmarterStats免费版本。运行SmarterStats的服务器需要能够运行ASP.NET网站。

没有多一点调查,最容易出问题的地方,任何其他的建议是在黑暗中拍摄。特别是因为真正的问题可能在数据库的一端是可能的。剖析有问题的页面可以帮助您找到答案。

+0

非常有用的答案,谢谢。此刻,我再次感到自己就像在黑暗中拍摄一样。我有一个强大的编程背景,可以看到代码问题。这只是试图隔离性能最差的应用程序的第一个...! – EvilDr 2013-03-08 09:28:52

从我的经验中销毁记录集(设置为空)不会影响性能。你需要检查的东西,如:

  • 数据库连接打开,然后没有关闭。
  • 使用应用程序变量(这些咀嚼一吨内存)。
  • 会话变量的过度使用(在某种程度上)。
  • 拉取不需要的数据或不使用SQL查询进行分页纠正。
  • 文件操作过多。