如果这是更多的serverfault vs.stackoverflow,请原谅。它似乎在边界上。
我们有一个使用ASP.NET缓存为电子商务应用程序缓存大量产品数据的应用程序。这是一个包含65K元素的字典对象,根据我们的计算,该对象的大小约为10GB。
问题:
到目前为止,我们已经尝试过:
在machine.config/system.web中(sf不允许使用标签,请原谅格式):
processModel autoConfig="true" memoryLimit="80"
在web.config/system.web/caching/cache中(sf不允许使用标签,请原谅格式):
privateBytesLimit = "20000000000" (and 0, the default of course)
percentagePhysicalMemoryUsedLimit = "90"
环境:
Windows 2008R2 x64
32GB内存
IIS7
似乎没有什么能让我们超过60%的值(value)。
请参阅任务员的屏幕截图。
http://www.freeimagehosting.net/image.php?7a42144e03.jpg
最佳答案
有点晚了,但我遇到了几乎相同的问题。 processModel上memoryLimit
设置的问题在于,尽管已被记录下来,但它似乎没有任何作用。percentagePhysicalMemoryUsedLimit
同样看起来应该可以执行某些操作,但是没有任何效果。privateBytesLimit="20000000000"
确实可以工作。我去调试了该过程,找到了CacheMemorySizePressure对象,它成功获取了该值并将其设置为_memoryLimit。我会仔细检查。
另一个选项是在IIS应用程序池上设置“专用内存使用回收”阈值。这也应该被接受并覆盖默认的60%限制。
第三种选择是使用新的 MemoryCache
类并在其上设置PhysicalMemoryLimit
。