【问题标题】:ASP .NET Application CachingASP .NET 应用程序缓存
【发布时间】:2013-04-08 09:35:15
【问题描述】:

我们用 ASP .NET 开发的网站预计有 1000 个并发用户,并且随着 DB 中列表数量的增加,它的性能正在下降。什么样的缓存(如NCache或Appfabric)最能减少DB的负载并为更多并发用户提高性能。请给我一些建议。

【问题讨论】:

    标签: asp.net asp.net-mvc-3 caching appfabric ncache


    【解决方案1】:

    如果您有多个服务器运行,那么 Appfabric 类型的缓存系统将有很大帮助。如果要用于单个服务器,构建 asp.net 缓存系统也很好。最重要的因素之一是您将拥有的 RAM 大小。如果要添加越来越多的 RAM,您的网站将会越来越快。甚至 memcache 也可以使用 Is there a port of memcache to .Net? 。即使您看到类似堆栈溢出的网站,它们在数据库服务器上也有大约 380 GB 的 RAM,这使得它变得更快。甚至 SQL Server 也旨在将数据保存在 RAM 中以使其快速访问。

    【讨论】:

      【解决方案2】:

      在使用分布式缓存之前,请先审核您网站的性能。过去我看到太多错误,人们绝对想应用对他们无用的东西。

      您的网站因 1000 个并发用户而变慢?好的,这很正常:小型网站的架构不像大型网站。但是让我们看看为什么(无序列表):

      • 简单地说,什么是慢?一个页面,整个网站?
      • 网络:您的网络基础架构是否最佳?
      • DB:您的数据库是否过载?您的 Queres 可以优化吗?
      • MVC:你在使用异步吗?会议? Web API 呢?
      • Web:Web 性能如何? (CDN、脚本、CSS、请求数量……)

      要尽快检测系统中的瓶颈,有两种方法:负载测试和监控生产系统。

      这背后是 ScaleIn 与 ScaleOut 的挑战。我并不是说分布式缓存不是你的好解决方案:我只是说做最简单的!

      【讨论】:

        【解决方案3】:

        我强烈建议您查看用于 ASP.NET 应用程序的 NCache。 NCache

        是一个功能非常丰富的分布式缓存,适用于 .NET 应用程序并且功能更强大

        比 App Fabric。

        您可以使用NCache 进行应用程序数据缓存、ASP.NET 会话状态存储和运行时数据共享。

        【讨论】:

          【解决方案4】:

          在 GET 操作上使用:outputcache/ 如果你在保存到数据库中使用

          EF => Configuration.AutoDetectChangesEnabled = false;
          

          大部分问题都在优化不佳的代码中。

          【讨论】:

            猜你喜欢
            • 2012-07-26
            • 1970-01-01
            • 2012-12-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-09
            • 1970-01-01
            相关资源
            最近更新 更多