我有一个网站托管在Windows Azure共享网站上。它因为超过512MB /小时的内存使用限制而被暂停。如何减少windows azure共享网站的内存使用量?
我确实使用.net缓存(以防止多次调用数据库/外部API等)。
在Windows Azure的共享网站上缓存是否禁止?
我有一个网站托管在Windows Azure共享网站上。它因为超过512MB /小时的内存使用限制而被暂停。如何减少windows azure共享网站的内存使用量?
我确实使用.net缓存(以防止多次调用数据库/外部API等)。
在Windows Azure的共享网站上缓存是否禁止?
您是否使用System.Runtime.Cache?您应该能够限制缓存的数量,例如memorycache对象使用。有关更多信息,请参阅http://msdn.microsoft.com/en-us/library/dd941874.aspx。
可能值得在本地计算机上使用perfmon检查配置文件,看看它是否通常首先触及限制,然后查看是否可以在Azure上配置日志并再次通过它进行挖掘。
还确保一切都预编译,并且您不需要的加载和模块等可以真正影响Azure上的性能等。
即使您将停止使用缓存,它仍然可以被框架/库使用。我也有同样的问题(有趣的是,在自由模式下内存限制为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角色 - 有额外的小实例(成本相当于共享网站的成本)...
我认为你可能想在这里尝试的是扩大我们的范围而不是增加。如果您添加第二个实例,将使您的资源限制翻倍。
您是指主机上的实际内存? 正如你在一小时内使用了超过512MB的RAM并且正在被暂停吗? 如果是这样,为什么不只是一个真正的网络主机。 我错过了什么吗? – user1596138
我正试图使用Windows Azure,认为该网站是全新的,并不是特别忙碌......因此,这将是负担得起的,随时可以扩展。没想到如此快地达到了内存限制。这是常见的吗?这基本上是诱饵和开关,让用户升级到保留虚拟机? – Chaddeus