0

我有一个使用 ASP.NET MVC 3 和 Entity Framework 4.1 准备的网站。下图是我服务器的性能日志。

我的问题是w3wp.exe每分钟都在变大,而且永远不会释放。我在查询中使用LINQ to Entities并且我的所有实体框架代码都在使用块中。

我认为这是一个垃圾收集问题,但我不确定。我的问题是什么,我该如何解决?

Perfmon Logs 关于我的问题的图片

4

2 回答 2

1

这完全取决于您的网站在做什么。我们有运行在 32 GB RAM 上的 .NET 服务器,并且工作进程很乐意接受它想要的一切。它真的需要它。

您是否在运行大量后台线程,在会话/全局应用程序/静态方法中存储了大量数据?

连接字符串、阅读器、文件I/O等是否正确关闭?

.NET 垃圾收集效果很好,但您必须尽自己的一份力量。垃圾收集器(废物处理工程师)不会进入您的房子并为您收集它,您至少必须将其走到路边……或关闭/清空/处置您不使用的物体。

更新1:

正在发生的是 ASP.NET 工作进程正在创建缓冲区。当它达到一定的内存使用量时,它会随着时间的推移而减少,但它喜欢分配内存,因此它不必在需要时不遗余力地获取它。

于 2011-09-09T17:37:33.250 回答
0

您应该运行分析器以查看哪些进程和线程正在失控。Visual Studio 2010 有一些不错的分析工具,我相信还有一些其他的第三方工具。

这很可能是开发人员的糟糕编码,垃圾收集可能没有像上面提到的 Ryan 那样发挥作用。特别是如果您的应用程序使用多个线程。

于 2011-09-09T17:42:55.820 回答