我怎么能超出ASP.NET缓存应用IIS7的60%内存限制 [英] How can I exceed the 60% Memory Limit of IIS7 in ASP.NET Caching application

查看:3161
本文介绍了我怎么能超出ASP.NET缓存应用IIS7的60%内存限制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对不起,如果这是更serverfault与计算器。这似乎是在边境。

Pardon if this is more serverfault vs. stackoverflow. It seems to be on the border.

我们有一个缓存大量产品数据,为使用ASP.NET缓存电子商务应用的应用程序。这是65K元素的字典对象,而我们的计算把对象的大小在10GB〜。结果
问题:

We have an application that caches a large amount of product data for an e-commerce application using ASP.NET caching. This is a dictionary object with 65K elements, and our calculations put the object's size at ~10GB.
Problem:


  1. 的内存中的对象占用的金额似乎是远远超过我们的10GB的计算。

  1. The amount of memory the object consumes seems to be far in excess of our 10GB calculation.

最关心的问题::我们似乎无法使用32GB的超过60%的服务器。

BIGGEST CONCERN: We can't seem to use over 60% of the 32GB in the server.

我们试过到目前为止:

在machine.config中/ System.Web程序(SF不允许的标签,原谅格式化):

In machine.config/system.web (sf doesn't allow the tags, pardon the formatting):

processModel autoConfig="true" memoryLimit="80"

在web.config中/ System.Web程序/缓存/缓存(SF不允许的标签,原谅格式化):

In web.config/system.web/caching/cache (sf doesn't allow the tags, pardon the formatting):

 privateBytesLimit = "20000000000" (and 0, the default of course)
 percentagePhysicalMemoryUsedLimit = "90" 

环境:
2008R2的Windows 64
32GB RAM
IIS7

Environment: Windows 2008R2 x64 32GB RAM IIS7

似乎没有什么可以让我们超过60%的价值。
见taskman的截图。

Nothing seems to allow us to exceed the 60% value. See screenshot of taskman.

<一个href=\"http://www.freeimagehosting.net/image.php?7a42144e03.jpg\">http://www.freeimagehosting.net/image.php?7a42144e03.jpg

推荐答案

一个有点晚了,但我有几乎相同的问题。有问题的的memoryLimit 在设置中processModel是,它只是似乎没有任何效果,尽管被记录为这样的。

A little late but I'm having nearly the same issue. The problem with the memoryLimit setting on processModel is that it just seems to have no effect despite being documented as such.

percentagePhysicalMemoryUsedLimit 同样看起来像它应该做的事,但没有效果。

percentagePhysicalMemoryUsedLimit similarly looks like it should do something but has no effect.

privateBytesLimit =200亿确实的工作虽然。我去和调试过程中,发现了CacheMemorySize pressure对象,并将其成功地拿起值,并将其设置为_memoryLimit。我会仔细检查。

privateBytesLimit="20000000000" does work though. I went and debugged the process and found the CacheMemorySizePressure object and it successfully picked up the value and set it to _memoryLimit. I would double check that.

另一种选择是设置上的IIS应用程序池专用内存使用回收阈值。这也应该得到回升,并覆盖默认的60%的上限。

Another option is setting a Private Memory Usage recycle threshold on the IIS app pool. That should also get picked up and override the default 60% limit.

第三种选择是使用新的 的MemoryCache 类,并设置 PhysicalMemoryLimit 就可以了。

A third option is using the new MemoryCache class and setting the PhysicalMemoryLimit on it.

这篇关于我怎么能超出ASP.NET缓存应用IIS7的60%内存限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆