内存缓存Asp.net中的最大限制

时间:2014-10-30 07:42:49

标签: c# asp.net .net caching

我正在开发一个asp.net应用程序,它需要从大约500万条记录(大约4GB数据)中搜索记录。客户端正在寻求更高的性能并决定内存缓存。但是我在从asp.net上传数据到内存缓存时遇到了问题。我尝试更改应用程序池设置并将虚拟内存设置为0,将私有内存设置为0 ..没有任何结果。它正在上传到1.5GB左右并且丢失了内存异常。使用控制台应用程序通过取消选中"来推送数据时没有问题。 32位"在应用程序属性的构建设置中。 我在asp.net上的问题。我正在使用.net框架工作4.0与4核心服务器,服务器中可用的内存约为49GB。我还尝试在应用程序池中启用64位模式运行。但没有改变。 如果有任何解决方案,请建议我。

2 个答案:

答案 0 :(得分:0)

正如John已经提到的:查询5.000.000记录是数据库的工作,而不是您的代码。如果正确配置数据库(让数据库使用内存作为缓存,正确的索引,高性能的SQL查询),我认为有99.9%的可能性,数据库将比在ASP.NET中创建的任何内容快得多。 / p>

无论如何,如果您真的想要反过来做,那么您需要创建一个64位进程。
这样做的清单(我的头脑 - 不保证完整性):

  • 将解决方案的(所有部分)编译为“Any CPU”或“x64”
  • 在64位CPU和OS上运行IIS(应该是49 GB RAM的情况)
  • 将Application-Pool设置为以无内存限制的64位进程运行:
    • 应用程序池 - > “你的游泳池” - >高级设置...
      - >启用32位应用程序 - >假
      - >私有内存限制(KB) - > 0
      - >虚拟内存限制(KB) - > 0

答案 1 :(得分:0)

谢谢你们。我同意我可以在我的数据库中执行此操作。我每秒处理大量请求。我的数据库查询类似于:从table1中选择a,b,c,d,e,其中id =主键...这是非常简单和有效的查询...尽管这是有效的...它没有提供所需的性能。所以我们决定使用缓存。现在我们通过分别创建Windows服务(创建代理和主机缓存)和Web应用程序来解决问题。 Web应用程序内部调用此Windows服务..它现在正在工作。谢谢你的所有建议。