我们在 ASP .NET 中开发的网站预计有 1000 个并发用户,并且随着 DB 中列表数量的增加,其性能正在下降。什么样的缓存(如 NCache 或 Appfabric)最能减少 DB 的负载并提高更多并发用户的性能。请给我一些建议。
4 回答
如果您有多个服务器运行,那么 Appfabric 类型的缓存系统将有很大帮助。如果要用于单个服务器,构建 asp.net 缓存系统也很好。最重要的因素之一是您将拥有的 RAM 大小。如果要添加越来越多的 RAM,您的网站将会越来越快。连memcache也可以用.Net有没有memcache的端口?. 即使您看到类似堆栈溢出的网站,它们在数据库服务器上也有大约 380 GB 的 RAM,这使得它变得更快。甚至 SQL Server 也旨在将数据保存在 RAM 中以使其快速访问。
在使用分布式缓存之前,请先审核您网站的性能。我在过去见过太多错误,人们绝对想应用对他们无用的东西。
您的站点在 1000 个并发用户时变得很慢?好的,这很正常:小型网站的架构不像大型网站。但是让我们看看为什么(无序列表):
- 简单地说,什么是慢?一个页面,整个网站?
- 网络:您的网络基础设施是最优的吗?
- DB:您的数据库是否过载?你的 Queres 可以优化吗?
- MVC:你在使用异步吗?会议?网络 API 呢?
- 网络:网络性能怎么样?(CDN、脚本、CSS、请求数量……)
要尽快检测到您系统中的瓶颈,有两种方法:负载测试和监控生产系统。
这背后,是 ScaleIn Vs ScaleOut 的挑战。我并不是说分布式缓存不是你的好解决方案:我只是说做最简单的!
我强烈建议您查看用于 ASP.NET 应用程序的 NCache。NCache
是一个功能非常丰富的分布式缓存,适用于 .NET 应用程序,并且功能更强大
比 App Fabric。
您可以将NCache用于应用程序数据缓存、ASP.NET 会话状态存储和运行时数据共享。
在 GET 操作上使用:outputcache/
如果您在保存到数据库时使用
EF => Configuration.AutoDetectChangesEnabled = false;
大多数问题都在优化不佳的代码中。