【问题标题】:A worker process serving application pool 'xxx v4.0 (Classic)' has requested a recycle because it reached its private bytes memory limit为应用程序池“xxx v4.0 (Classic)”提供服务的工作进程已请求回收,因为它已达到其私有字节内存限制
【发布时间】:2015-03-16 22:14:21
【问题描述】:

我有一个具有 128MB RAM 的共享主机帐户,并且我的网站在它自己的应用程序池中。

网站很小,流量很低,但我不断收到以下错误:

A worker process serving application pool 'xxx v4.0 (Classic)' has requested a recycle because it reached its private bytes memory limit.

这种情况经常发生,会重新启动应用程序池。如果应用程序池重启太频繁,最终它会停止。然后,当我访问该站点时,我会收到 503 错误。

该站点是使用 c# 编写的,具有来自 ef 和 ado.net 的数据访问权限。我所有的数据库连接都在 using 语句中,我相信它们可以正确打开和关闭。

我已经与主机商谈过了,我可以将 RAM 升级到 256MB,这看起来确实可以让网站运行良好。但我有点担心,只是升级 RAM 只是暂时掩盖了问题。

在我将文件复制到我正在构建的服务器以进行发布之前,我在 Web 配置中将调试设置为 false。

当我在 Visual Studio 中运行解决方案时,我的 IIS 工作进程徘徊在 100 MB 左右。

我想我的问题是:

有什么方法可以在本地机器上复制我的托管环境? 一个相当小的网站超过 128MB 的 RAM 是否正常?

我有点不知道该尝试什么。任何帮助或指导将不胜感激。

其他可能重要的信息:

.NET 框架是 4.5 网络表格 使用AjaxControlToolkit(只加载我需要的脚本)

我查看了许多博客文章和类似问题,但似乎没有任何进展。

谢谢

吉姆

【问题讨论】:

  • 这是一个猜测,但我会说你的代码中有内存泄漏。另一种猜测是检查您是否关闭了所有数据库连接。如果您还没有使用 using 语句,请更改代码以使用
  • 猜二是静态类和方法
  • 猜猜三是你有没有返回任何大数据集?
  • @Ewan,感谢您的建议!所有数据库连接都在 using 语句中,所以我很高兴它们很好。有一些静态类和方法,但不多。我会看看,看看我能不能改变这些。没有返回大数据集。网站使用超过 128MB 是否不寻常?
  • oo 猜四,带有购物袋的会话变量。我猜 100Mb 并不大,这真的取决于您的站点。您必须考虑通常在请求之间打开多少内容

标签: c# .net iis memory-management application-pool


【解决方案1】:

该消息是关于达到 IIS 本身的配置限制,它不一定与主机本身的 RAM 量有任何关系(尽管您在 IIS 中设置的设置应该考虑到您的总 RAM,所以有一个间接链接)。

  • 打开 IIS
  • 左键单击“应用程序池”
  • 找到您的专用池并右键单击它,选择“回收...”
  • 检查“私有内存使用情况(以 KB 为单位):”值
  • 这就是你所超越的

[这些说明基于 IIS 7.5,但其他版本类似]

【讨论】:

    猜你喜欢
    • 2010-09-27
    • 1970-01-01
    • 2012-11-18
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2012-01-19
    • 2015-04-17
    相关资源
    最近更新 更多