我在Windows Azure共享网站上托管了一个网站。它因内存使用限制为512MB /小时而被暂停。
我确实使用.net缓存(以防止多次调用数据库/外部API等)。
这是否在Windows Azure上的共享网站中禁止使用?
答案 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)
我认为你可能想要尝试的是扩展我们而不是扩展。如果添加第二个实例,将使资源限制加倍。