짧은 대답
귀하의 응용 프로그램 풀 또는 웹 사이트가 너무 빨리 종료되고 있습니다. 사이트에서 유휴 시간 제한을 확장하고 사이트를 실행하는 풀의 응용 프로그램 풀 수명을 연장하십시오. 메모리 할당 및 요청 제한을 높입니다. 당신이 때 뭔가가 캐시에서 제거하는 이유, 당신은 삽입에 CacheItemRemovedCallback 옵션을 사용하여 항목 제거를 기록 할 필요가 알고 싶다면
전체 응답
... 그럼 당신은 사용 이유를 기록 할 수 있습니다 CacheItemRemovedReason 인수당신은 따라서 네 나열된 이유 중 하나 이유를 기록 할 수 있습니다 :
- 은 제거 항목은 제거 메서드 호출하거나 동일한 키를 지정된 삽입 메서드 호출에 의해 캐시에서 제거됩니다.
- 만료 됨 항목이 만료되었으므로 캐시에서 제거됩니다.
- 덜 익숙 함 시스템에서 메모리를 제거하기 위해 항목을 캐시에서 제거했습니다.
- DependencyChanged 관련된 캐시 종속성이 변경되어 항목이 캐시에서 제거되었습니다.
일반적으로 만료 및 불충분은 캐시에 대한 호출 제거 및 종속성이없는 설명의 이유가되는 것을 알 수 있습니다.
이 재미있는 것을 추적하면서 항목이 만료 또는 과소 사용되지 않았 음을 알 수 있습니다. 오히려 AppDomain이 언로드된다는 것을 알게 될 것입니다.
한 가지 방법은 web.config (또는 bin 디렉토리 또는 .aspx 등) 파일이 변경되기 때문입니다. 이 문제가 발생한시기에 대한 자세한 내용은 응용 프로그램 섹션을 다시 시작하십시오 (this page 참조). 이러한 상황이 발생하면 현재 보류중인 요청이 모두 유출되고 캐시가 비워지고 AppDomain이 언로드됩니다. AppDomain.IsFinalizingForUnload을 확인하고 콜백 중에이를 기록함으로써이 상황을 감지 할 수 있습니다.
AppDomain이 재활용되는 또 다른 이유는 IIS가 AppPool을 구성한 이유 중 하나로 AppPool을 재활용하기로 결정한 경우입니다. 그 예로는 XXX 메모리 YYY을, 수명에 걸쳐 AppPool을위한 런타임초, TTT 예약 된 재생 시간, IIII 유휴 시간 (수신없이 요청)이 할당되어있다. 자세한 내용은 this article for IIS6 또는 this article for IIS7
을 확인하십시오. 어떻게 처리되는지 어떻게 확인합니까? –
@ J.W. : 항목이 제거되었거나 만료 된 경우 Cache [CacheName]은 null입니다. – RickNZ