현재 AppFabric 캐싱을 테스트하고 있지만 캐싱에 이상한 문제가 있습니다. 비록 그가 3 분 동안 간단한 객체를 캐쉬 할 필요가 있다고하더라도, 그는 단지 약 3 초 동안 만 캐시합니다.AppFabric 캐싱이 갑자기 만료 됨
PS C :> 가져 오기 - CacheConfig 기본 CacheName : 100 분 CacheType : 필요한 보조 분할 : 0 IsExpirable : 의 TimeToLive 기본 진정한 EvictionType을 : LRU를 다음과 같이
내 캐시의 설정은 다음과 같습니다 는 NotificationsEnabled :
Use-CacheCluster
Start-CacheCluster
Grant-CacheAllowedClientAccount <myAccount>
: 나는 다음과 같은 3 커맨드를 사용하여이 캐시를 내장
거짓
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Press any key to continue, Q to quit");
while (Console.ReadKey() != new ConsoleKeyInfo('q', ConsoleKey.Q, false, false, false))
{
DoStuff();
}
}
static void DoStuff()
{
Person p = null;
DataCacheItem cacheItem = CacheUtility.CurrentCache.GetCacheItem("jebas");
if (cacheItem != null)
{
Console.WriteLine("V - Got my stuff from cache");
p = (Person)cacheItem.Value;
}
if (p == null)
{
Console.WriteLine("! - I just did an expensive call");
p = GetPerson();
CacheUtility.CurrentCache.Add("jebas", p, new TimeSpan(0, 30, 0));
}
}
private static Person GetPerson()
{
return new Person() { FirstName = "Jeroen", LastName = "Van Bastelaere", Id = Guid.NewGuid() };
}
}
CacheUtility 클래스 :
sealed class CacheUtility
{
private static DataCacheFactory _factory;
private static DataCache _cache;
private static readonly object _lock = new object();
CacheUtility() { }
public static DataCache CurrentCache
{
get
{
lock (_lock)
{
if (_cache == null)
{
List<DataCacheServerEndpoint> servers = new List<DataCacheServerEndpoint>();
servers.Add(new DataCacheServerEndpoint("demo2010a", 22233));
DataCacheFactoryConfiguration config = new DataCacheFactoryConfiguration()
{
Servers = servers
};
_factory = new DataCacheFactory(config);
_cache = _factory.GetDefaultCache();
}
return _cache;
}
}
}
}
이 프로그램을 사용하여, 나는 단지 그것을 실행하고 금액을 임의의 키를 누르
는 그 후 나는 다음과 같은 프로그램 (program.cs)를 실행하려고 시간 : 대부분 "캐시에서 가져 왔습니다."라고 말하지만 3 초마다 한번 비싼 전화를합니다. 그는이 가지고있는 캐시 그리워 때 나는 GET-CacheStatistics 기본 확인하는 경우 :
PS C :> 가져 오기 - CacheStatistics 기본
크기 : 0 ITEMCOUNT : 0 RegionCount : 1 RequestCount : 1543 를 미스 카운트 :
크기 : 566 ITEMCOUNT : 1 RegionCount : 1이 캐시에있을 때 75
가 나에게이 있습니다RequestCount : 1553 미스 카운트는 : 내 프로그램을 실행 (그리고 더 이상 캐시에 갑자기 아니다) 때 77
내 객체가 퇴거됩니다 말할 수 있었다 성능 모니터를 사용하여 카운터 총 퇴거 객체가 상승하기 때문이다.
나는 내가 순간에 캐싱 해요 유일한 객체의 서버 메모리가 충분히 남아 (4기가바이트 +)를 가지고, 그것은 불구하고 퇴거하는 이유 아무 생각이
아무도 내 개체를 가져 도와 줄 수 30 초 동안 캐시되어 3 초가 아닌 캐시를 요청합니다.
도움말에 감사드립니다. 사전에
감사합니다,
제론
Apparantly 히 자원 제한 나는 많은 메모리 (물리적 전체의 90 %를 차지했다 약 6 W3WP 프로세스, 1 SQL과 하나 개 owstimer 과정을 한 장소에왔다 메모리) 및 총 여유 메모리가 실제 메모리의 15 % 미만이면 스로틀을 시작합니다. 살인 프로세스가 나를 위해 문제를 해결했습니다 (또는 실제로 : iisreset :-)) –
실제로 해결되었지만 아직 표시 할 수 없습니다. –