3

我被要求查看一个已经减速到停止点的服务器。服务器上有数百个经典的 ASP 站点在其上运行,在检查一些代码后,我发现有很多实例正在打开、使用 ADODB.Recordset(以及其他)对象,但从未销毁(设置为 Nothing)。我很感激可能还有其他我还没有发现的问题......

原始代码开发人员拒绝承担任何责任,因为他们表示,在网站初始部署之后,他们多年来一直运行良好。

不幸的是,一天中没有足够的时间来检查所有站点的所有代码。因此,是否有任何可用的应用程序可以监视内存使用、泄漏或任何可能有助于诊断导致服务器停止的原因?

最初这些站点在 Win2003、IIS6 上,但现在已移至 Win2012、IIS8。现在新服务器上也出现了减速,所以我确信这不是硬件故障。

任何建议,将不胜感激。请注意,我也用 ASP.NET 对此进行了标记,因为我很欣赏大多数经典的 ASP 开发人员现在都在使用 .NET,但也许可以从他们的经验中提出一些建议......

4

3 回答 3

1

在高负载下,所有打开的连接都可能导致问题,但即使在 ASP Classic 中也有一些不错的垃圾收集。当页面完成处理时,保持打开的对象和连接会自动关闭。另请参阅:https ://stackoverflow.com/a/1613337/25163

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

如果您还没有相应的程序,我已经在几个项目中使用了SmarterStats的免费版本。运行 SmarterStats 的服务器需要能够运行 ASP.NET 站点。

如果不对最有问题的领域进行更多调查,任何其他建议都将是在黑暗中开枪。特别是因为真正的问题很可能在等式的数据库端。分析有问题的页面将有助于发现这一点。

于 2013-03-07T20:08:11.007 回答
0

除了进入每个文件并手动将每个 Recodset、Connection、Command 等对象设置为空之外,我认为您无能为力。

几年前我有类似的事情,我唯一的解决方案是上面的。

对不起!

于 2013-03-06T11:47:36.613 回答
0

根据我的经验销毁记录集(设置为空)不会影响性能。您需要检查以下内容:

  • 数据库连接打开然后不关闭。
  • 使用应用程序变量(这些会消耗大量内存)。
  • 过度使用会话变量(在一定程度上)。
  • 使用 SQL 查询提取不需要的数据或不进行分页更正。
  • 过多的文件操作。
于 2013-03-08T08:19:30.833 回答