有没有其他人遇到过 IIS 6 应用程序池内存占用过大的问题?我使用的是 Server 2003 和我们的一个经典 ASP 应用程序(由 Access 数据库提供支持)。一旦发出请求,就会泄漏大约 180 MB。我将应用程序移到它自己的池中,以将其与其他站点隔离。我不认为我们在 Windows 2000 中的 IIS 5 上遇到过这个问题,我可能错了。可能是它正在加载数据库?删除旧数据有帮助吗?感谢您的时间!
答案1
我使用 IIS 6 托管了几个“经典 ASP”应用程序,后端为 MDB 文件,但没有看到此行为。它可以正常工作。
我猜你的某些代码内存耗尽了(存储了从未清理过的会话变量等)。我怀疑从数据库中删除数据是否会改善这种情况,除非泄漏的代码泄漏量与数据库大小成比例(即程序员正在加载大型记录集,然后在脚本端对其进行解析)。
分析/基准测试经典 ASP 代码并不好玩。您可能将数据库连接存储在未正确关闭的会话变量中。我会首先朝这个方向研究。
答案2
您是否发现内存使用量随着时间的推移而增加?这很可能是您的应用代码中存在泄漏。您可以尝试增加进程回收的频率,以释放内存作为解决方法。如果这是代码问题,那么这只是一个权宜之计,您需要分析代码以找出问题所在。
经典 ASP 中内存泄漏的一大元凶是从未被关闭和正确处置的 ADO 对象。