【发布时间】:2013-04-08 09:35:15
【问题描述】:
我们用 ASP .NET 开发的网站预计有 1000 个并发用户,并且随着 DB 中列表数量的增加,它的性能正在下降。什么样的缓存(如NCache或Appfabric)最能减少DB的负载并为更多并发用户提高性能。请给我一些建议。
【问题讨论】:
标签: asp.net asp.net-mvc-3 caching appfabric ncache
我们用 ASP .NET 开发的网站预计有 1000 个并发用户,并且随着 DB 中列表数量的增加,它的性能正在下降。什么样的缓存(如NCache或Appfabric)最能减少DB的负载并为更多并发用户提高性能。请给我一些建议。
【问题讨论】:
标签: asp.net asp.net-mvc-3 caching appfabric ncache
如果您有多个服务器运行,那么 Appfabric 类型的缓存系统将有很大帮助。如果要用于单个服务器,构建 asp.net 缓存系统也很好。最重要的因素之一是您将拥有的 RAM 大小。如果要添加越来越多的 RAM,您的网站将会越来越快。甚至 memcache 也可以使用 Is there a port of memcache to .Net? 。即使您看到类似堆栈溢出的网站,它们在数据库服务器上也有大约 380 GB 的 RAM,这使得它变得更快。甚至 SQL Server 也旨在将数据保存在 RAM 中以使其快速访问。
【讨论】:
在使用分布式缓存之前,请先审核您网站的性能。过去我看到太多错误,人们绝对想应用对他们无用的东西。
您的网站因 1000 个并发用户而变慢?好的,这很正常:小型网站的架构不像大型网站。但是让我们看看为什么(无序列表):
要尽快检测系统中的瓶颈,有两种方法:负载测试和监控生产系统。
这背后是 ScaleIn 与 ScaleOut 的挑战。我并不是说分布式缓存不是你的好解决方案:我只是说做最简单的!
【讨论】:
我强烈建议您查看用于 ASP.NET 应用程序的 NCache。 NCache
是一个功能非常丰富的分布式缓存,适用于 .NET 应用程序并且功能更强大
比 App Fabric。
您可以使用NCache 进行应用程序数据缓存、ASP.NET 会话状态存储和运行时数据共享。
【讨论】:
在 GET 操作上使用:outputcache/ 如果你在保存到数据库中使用
EF => Configuration.AutoDetectChangesEnabled = false;
大部分问题都在优化不佳的代码中。
【讨论】: