如何减少Windows azure共享网站上的内存使用量?

时间:2013-05-15 05:47:39

标签: memory-management azure quota

我在Windows Azure共享网站上托管了一个网站。它因内存使用限制为512MB /小时而被暂停。

我确实使用.net缓存(以防止多次调用数据库/外部API等)。

这是否在Windows Azure上的共享网站中禁止使用?

4 个答案:

答案 0 :(得分:1)

您使用System.Runtime.Cache吗?你应该能够限制缓存的数量,例如memorycache对象使用。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/dd941874.aspx

答案 1 :(得分:1)

即使您将停止使用Cache,它仍然可以被框架/库使用。我也有同样的问题(有趣的是,在自由模式内存限制为1024MB,但共享一个降低到512)。

正如我所见,Azure在门户网站上显示的内存量似乎非常接近System.Diagnostics.Process.GetCurrentProcess()。PrivateMemorySize值。

此时我正在试验缓存设置以设置最大内存:

<system.web>
  <caching>
    <cache privateBytesLimit="250000000" privateBytesPollTime="00:00:15"/>
  </caching>
</system.web>

几天前我设置了300MB,但几分钟前再次被暂停:(因此降低到250MB。

但无论如何,这是非常不清楚的,奇怪的,&#34;错误&#34;解决方案imho。

<强>更新

今天早上再次被停赛。使用小实例(1.7 GB RAM)临时转换为标准模式。

我的WorkingSet计数器现在大约200兆(使用PeakWorkingSet 330 megs)。但! GC的CollectionCount增加了大约8倍(Gen0是1800次而不是250次,而不是一天)。

我目前的理论是&#34;分享&#34;模式网站在里面运行&#34;大&#34;具有大量内存和垃圾收集器的虚拟机不需要经常运行,导致更长的垃圾生命周期&#34;和更多的内存消耗。

目前无法访问我的开发者计算机进行某些验证,但计划尽快将网站转换为云服务中的网络角色 - 使用额外的小实例(费用与共享网站费用相当)...

答案 2 :(得分:0)

可能值得在本地计算机上使用perfmon检查配置文件,看看它是否通常首先达到限制,然后查看可能在Azure上配置日志记录并再次挖掘它。

同时确保所有内容都经过预编译,并且您不需要加载和模块等不能真正影响Azure的性能等。

答案 3 :(得分:0)

我认为你可能想要尝试的是扩展我们而不是扩展。如果添加第二个实例,将使资源限制加倍。