我被要求查看已经放慢到停止点的服务器。服务器上运行着数百个经典ASP站点,在检查了一些代码后,我发现有很多实例,其中ADODB.Recordset(以及其他)对象被打开,使用,但从未被销毁(设置为Nothing)。我很欣赏可能还有其他问题,我还没有发现......
原始代码开发人员拒绝承担任何责任,因为他们表示,在网站初次部署后,他们的工作表现良好多年。
不幸的是,当天没有足够的时间检查所有网站上的所有代码。因此,是否有任何可用的应用程序可以监视内存使用,泄漏或任何可能有助于诊断导致服务器停止运行的内容?
最初这些网站是在Win2003,IIS6上,但现在已经转移到Win2012,IIS8。现在在新服务器上也经历了减速,所以我确定它不是硬件故障。
任何建议将不胜感激。请注意我也用ASP.NET标记了这一点,因为我很欣赏大多数经典的ASP开发人员现在正在使用.NET,但可能能够根据他们的经验提出建议......
答案 0 :(得分:1)
所有打开的连接都可能在高负载下引起问题,但即使在ASP Classic中也有一些不错的垃圾收集。当页面处理完毕后,打开的对象和连接将自动关闭。另见:https://stackoverflow.com/a/1613337/25163
我过去曾使用粗略的ASP Profiler来查找我仍然维护的ASP / VBScript网站中特定瓶颈的位置。我会查看具有有问题加载时间的任何特定页面的日志,并首先将其作为目标。
如果你还没有这方面的程序,我在几个项目中使用了SmarterStats的免费版本。运行SmarterStats的服务器需要能够运行ASP.NET站点。
如果没有对最有问题的领域进行更多调查,任何其他建议都将在黑暗中进行。特别是因为真正的问题可能就在数据库末端。分析有问题的页面有助于找到答案。
答案 1 :(得分:0)
除了进入每个文件并手动将每个Recodset,Connection,Command等对象设置为空,我认为你还有很多其他事情可做。
几年前我有类似的东西,我唯一的解决方案是上面的。抱歉!
答案 2 :(得分:0)
根据我的经验销毁记录集(设置为空)不会影响性能。您需要检查以下内容: