ASP.NET 응용 프로그램에 몇 명의 사용자만 있는 경우 속도가 얼마나 빠르든 느리든 상관하지 않을 것이며 어쨌든 꽤 좋은 성능을 제공할 것입니다. 그러나 ASP.NET 응용 프로그램에 더 많은 부하를 추가하면 ASP.NET 성능이 크게 떨어질 가능성이 상당히 높아집니다. 충분한 하중이 가해지면 멈출 수도 있습니다. 그리고 아이러니하게도 이 모든 일이 비즈니스에서 더 많은 활동을 보고 있을 때 발생하므로 영향이 훨씬 더 큽니다.
오늘날 ASP.NET은 트래픽이 많은 앱에서 매우 인기를 얻었으며 이제는 10-20개의 서버 부하 분산 웹 팜과 경우에 따라 50-100개의 서버 팜을 보는 것이 일반적입니다. 따라서 이러한 상황에서 ASP.NET 성능은 해결해야 할 훨씬 더 민감한 문제입니다.
NCache 세부 정보 NCache 기술 문서 ASP.NET 캐싱 문서
사용 NCache 분산 캐시로
ASP.NET에 대한 부하가 증가함에 따라 ASP.NET 성능이 떨어지는 주된 이유는 ASP.NET 응용 프로그램 웹 팜이 처리할 수 있는 방식으로 더 큰 부하를 처리할 수 없는 데이터베이스입니다. ASP.NET 웹 팜에 더 많은 서버를 추가할 수 있지만 데이터베이스에서는 그렇게 할 수 없기 때문입니다.
따라서 이러한 상황에서 가장 좋은 방법은 분산 캐시 처럼 NCache. NCache 메모리에 있으므로 데이터베이스보다 훨씬 빠릅니다. 그리고, NCache 캐시 서버 클러스터를 구축하고 웹 팜처럼 클러스터를 선형적으로 확장할 수 있습니다. 결과적으로 NCache, 극단적인 트랜잭션 부하에서도 ASP.NET 성능이 훌륭하게 유지됩니다. 당신이 사용할 수있는 NCache 다음 두 가지 방법으로:
ASP.NET 세션 상태 저장소
ASP.NET 응용 프로그램을 다음과 같이 구성할 수 있습니다. ASP.NET 세션 상태 저장 NCache InProc, State Server 또는 SQL Server 대신 여기서는 프로그래밍이 필요하지 않습니다. 다음과 같이 web.config 코드만 수정합니다.
1 2 3 4 5 6 |
<sessionstate cookieless="false" regenerateexpiredsessionid="true" mode="Custom" customprovider="NCacheSessionProvider" timeout="20"> <providers> <add name="NCacheSessionProvider" type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider" exceptionsenabled="true" enablesessionlocking="true" emptysessionwhenlocked="false" sessionlockingretry="-1" sessionappid="NCacheTest" useinproc="false" enablelogs="false" cachename="myReplicatedCache" writeexceptionstoeventlog="false" asyncsession="false"> <providers> <sessionstate></sessionstate></providers></add></providers></sessionstate> |
ASP.NET 애플리케이션 데이터 캐시
다른 방법은 당신이 캐시 응용 프로그램 데이터 다음과 같은 분산 캐시에서 NCache 따라서 다음에 ASP.NET 응용 프로그램에 이 데이터가 필요할 때 캐시에서 찾습니다. 다음은 애플리케이션 데이터를 캐시하는 방법에 대한 작은 코드 샘플입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using Alachisoft.NCache.Web.Caching; ... Cache cache = NCache.InitializeCache("myCache"); // Create a key to lookup in the cache // The key for will be like “Employees:PK:1000” string key = "Employee:EmployeeId:" + emp.EmployeeId.ToString(); Employee employee = (Employee)Cache[key]; if (employee == null) { // item not found in the cache. load from db LoadEmployeeFromDb(employee); // Now, add it to the cache for future reference Cache.Insert(key, employee, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Default, null ); } |
캐시하는 데이터가 많을수록 데이터베이스로 이동해야 하는 횟수가 줄어들고 ASP.NET 응용 프로그램 성능이 빨라집니다.