2010-01-14 60 views
1

越来越:ASP.NET内存优化调度

aspnet_wp.exe (PID: 988) was recycled because memory consumption exceeded the 148 MB (60 percent of available RAM). 

的web.config文件等优化什么建议吗?已经完成了所有的调试/发布编译工作。但仍需要快速记忆。机器有512MB RAM,在512MB上运行平稳。想尽可能地挤压它。在代码中它也尽可能地保持低内存,但它只有50mb的数据。这一定是可能的。还是框架需要这么多?

+2

你为什么试图将ASP.Net放入这么小的内存? – Earlz

+0

USB棒尺寸嵌入式系统;-)如果它运行在一种平台上。我认为它可以提升虚拟机中的真机xCore。 – csharpnoob

+1

有一些地方ASP.Net没有设计去... – Earlz

回答

1

嗯,它应该适合,但它取决于你在做什么,以及你正在运行的是哪个版本的IIS。运行

Optimizing Memory Usage (IIS 6.0)

服务器IIS从充足的物理内存的6.0利益。一般来说,您添加的内存越多,服务器使用的越多,执行得越好。 IIS 6.0需要至少128 MB的内存;建议至少256 MB。如果您运行的是内存密集型应用程序,那么您的服务器可能需要更多内存才能以最佳方式运行 - 超过推荐的256 MB内存。

IIS 7.0 however has somewhat larger requirements

  • 最低:512 MB
  • 推荐:2 GB或更多

这篇文章对最佳化一些其他建议你可以进行,我会还推荐Tess Ferrandez的博客,特别是她的帖子".NET Memory usage - A restaurant analogy",它很好地解释了内存分配,以及她在调试内存使用方面的其他帖子 - 这些帖子在类似的地方开始为RickNZ's suggestions

+0

感谢所有的信息,对大家。我可以在磁盘上序列化我的应用程序,只保留内存中的基本例程。有用。但磁盘访问意味着性能不佳。所以我会尝试所有其他有意义的建议,不会影响速度和功能。但至少它可以工作。 – csharpnoob

2

您可以尝试解除配置您不使用的所有HttpModules。例如,Windows身份验证是常见的。

您也可以看看,你分配任何静态变量。

在尽可能多的网页尽可能禁用ViewState中可能会有点帮助。

最小化或消除从bin目录或GAC中加载的任何额外DLL。

但是,这样做不太可能通过狩猎和啄食来节省大量的记忆。如果你认真对待它,你需要一个内存分析器工具,比如SciTech的.NET Memory Profiler。他们有一个免费的两周试用期。

+0

。我完全忘了。我先试试这个。减少HttpModules或者Dll可能会给内存带来一点风险,但它可能会导致风险。 – csharpnoob

0

你把什么放在记忆里?

256mb远低于服务器的容量,即使它是共享服务器,您可能有更多空间可以使用。

你缓存?

什么操作系统,你运行?

就像RickNZ所说的那样,尽可能地减少脂肪,可以为你节省一些记忆。

老实说,我认为你只是有一个不切实际的内存目标。