在 Windows Server 2003/IIS 6 上读取 16MB 文本文件时,ASP.net 3.5 应用程序会间歇性地抛出 OutOfMemory 异常

在 Windows Server 2003/IIS 6 上读取 16MB 文本文件时,ASP.net 3.5 应用程序会间歇性地抛出 OutOfMemory 异常

我有一个在 Windows Server 2003 和 IIS 6.0 上运行的 ASP.net 3.5 应用程序,当我的代码读取 16MB 文件时,有时会出现 OutOfMemory 异常。通常,如果您尝试再次执行相同的读取,我会继续收到异常。

如果我重新启动 w3svc,异常就会消失。如果我将它放置几个小时,然后稍后尝试运行代码,异常也会消失。

该异常来自对文件流上的 ReadToEnd 调用,因此这不是我的代码中泄漏内存的原因。

我的网站上的 w3wp.exe 进程在正常负载下通常使用大约 250-350MB 内存。

我猜测是每个连接的内存使用情况或其他原因导致了此问题,但我对 IIS / ASP.net 内存管理了解不够,不知道在哪里可以找到一种方法来追踪这个问题或对其进行调整以避免导致问题。

我几乎总是在这台服务器上拥有 2+GB 的可用 RAM,并且可用 RAM 从未低于 1.5GB。

多年来,我一直在这些服务器上运行相同的应用程序/代码,但这个异常是最近才出现的。我猜它是在文件缓慢增长到 16M 以上时出现的,但这可能只是巧合。文件肯定在缓慢增长,所以几个月前,当我从未遇到过这个问题时,它肯定比现在小一点。

有问题的代码可能每天运行 5-6 次(在缓存中读取)并且似乎每周出错一两次,所以它并不总是出错,但它出现的频率足以成为一个问题。

我所访问的 IIS 连接或 ASP.net 网站是否存在某种限制?如果有,当我知道我有大量可用 RAM 时,有没有办法增加限制?

相关内容