2013-05-15 30 views
4

我有一个网站托管在Windows Azure共享网站上。它因为超过512MB /小时的内存使用限制而被暂停。如何减少windows azure共享网站的内存使用量?

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

在Windows Azure的共享网站上缓存是否禁止?

+0

您是指主机上的实际内存? 正如你在一小时内使用了超过512MB的RAM并且正在被暂停吗? 如果是这样,为什么不只是一个真正的网络主机。 我错过了什么吗? – user1596138

+1

我正试图使用​​Windows Azure,认为该网站是全新的,并不是特别忙碌......因此,这将是负担得起的,随时可以扩展。没想到如此快地达到了内存限制。这是常见的吗?这基本上是诱饵和开关,让用户升级到保留虚拟机? – Chaddeus

回答

0

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

还确保一切都预编译,并且您不需要的加载和模块等可以真正影响Azure上的性能等。

0

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

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

在这个时刻,我与缓存设置尝试设置最大内存:

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

几天前我设定300MB,但几分钟前再次得到了暂停:(,所以降低到250MB

但无论如何,这是非常不清楚,奇怪的 “错误” 的解决方案恕我直言。

UPDATE

今天早上再次暂停。暂时转换为小实例(1.7 GB RAM)的标准模式。

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

我目前的理论是,在“共享”模式下,网站运行在内存很大的“大”虚拟机内部,垃圾收集器不需要经常运行,导致“垃圾寿命”更长,内存消耗更多。

没有访问到我的开发计算机现在的一些验证,但刨去尽快转换的网站在云服务Web角色 - 有额外的小实例(成本相当于共享网站的成本)...

0

我认为你可能想在这里尝试的是扩大我们的范围而不是增加。如果您添加第二个实例,将使您的资源限制翻倍。