공통 예외(Windows Server AppFabric 캐싱)

캐시 클라이언트 메서드 호출 중에 오류가 발생하면 캐시 클라이언트는 DataCacheException 클래스 인스턴스를 발생합니다. ErrorCode 속성에는 오류 유형이 포함되어 있습니다.

각 캐시 클라이언트 API에서 여러 일반 오류 중 하나가 발생할 수 있습니다.

이러한 오류를 예상하도록 응용 프로그램 코드를 설계해야 합니다. 다음 설명에서는 각 상황을 적절하게 처리할 수 있도록 각 오류에 대한 자세한 정보를 제공합니다.

Timeout

시간 제한이 발생하면 DataCacheException 개체가 발생되고 Timeout 오류 코드가 표시됩니다. 시간 제한은 캐시 클라이언트가 구성된 시간 제한 설정 내에 서버로부터 응답을 받지 못했다는 것을 나타냅니다. 클라이언트와 서버 사이의 네트워크 문제 등과 같은 다양한 문제가 원인이 될 수 있습니다.

시간 제한 오류가 발생하더라도 서버에서 요청된 작업을 성공적으로 처리했을 수 있습니다. requestTimeout이 10000밀리초로 설정된 캐시 클라이언트가 있는 응용 프로그램을 예로 들어 보겠습니다. 응용 프로그램에서 새 캐시 항목을 추가하기 위해 Add API를 호출합니다. 호출이 10초보다 오래 걸리는 경우 응용 프로그램에서 시간 제한 오류가 발생합니다. 이 경우 서버에서 추가 작업을 완료했지만 시간 제한이 경과하기 전에 클라이언트에 응답하지 못했을 수도 있습니다. 오류 처리기에서 응용 프로그램은 이 가능성을 고려해야 합니다. 오류 처리기에서 단순히 개체를 다시 추가하려고 시도할 경우 오류 코드가 KeyAlreadyExists인 다른 예외가 발생할 수 있습니다.

응용 프로그램 디자인 요구 사항에 따라 캐시 클라이언트 시간 제한 기간을 늘리거나 줄일 수 있습니다. 시간 제한 기간을 구성하는 방법에 대한 자세한 내용은 캐시 클라이언트 시간 제한 구성(Windows Server AppFabric 캐싱)을 참조하십시오.

RetryLater

RetryLater 오류 코드는 캐시 클러스터가 요청을 일시적으로 완료할 수 없다는 것을 나타냅니다. 예를 들어, 관리자가 캐시 클러스터를 구성 중인 경우에 이 오류가 발생할 수 있습니다.

이 유형의 오류가 발생하면 DataCacheException 개체의 SubStatus 속성 값을 확인해야 합니다. 이 속성은 오류의 원인을 설명하는 자세한 정보를 제공합니다. 예를 들어, 캐시 클러스터가 중지되면 DataCacheException이 발생하여 ErrorCode 속성을 RetryLater로 설정하고 SubStatus 속성을 CacheServerUnavailable로 설정합니다. 요청과 연결된 Windows 계정이 캐시 클러스터에서 허용되지 않는 경우 또는 캐시 호스트의 방화벽이 제대로 구성되지 않은 경우에도 동일한 SubStatus 값이 표시됩니다.

하나 이상의 대상 서버에서 사용 가능한 메모리가 부족하면 RetryLater 오류 코드도 발생할 수 있습니다. 이 경우 SubStatus 속성이 Throttled로 설정됩니다. 정체된 캐시 서버를 발생시킬 수 있는 여러 요인이 있습니다.

  • get-cacheconfig Windows Powershell 명령을 사용하여 캐시 설정을 확인합니다. EvictionTypeLRU가 아니라 None으로 설정된 캐시를 찾습니다. 제거를 사용하지 않도록 설정하면 캐시 클러스터에서 서버의 메모리가 부족할 때 캐시된 항목을 제거할 수 없습니다.

  • Windows 작업 관리자 또는 성능 모니터를 사용하여 캐시 서버에서 사용 가능한 메모리를 사용 중일 수 있는 다른 프로세스를 찾습니다.

  • 응용 프로그램의 캐시 사용을 검사합니다. 삽입된 개체의 평균 비율, 해당 크기 및 시간 제한 값은 모두 캐시 클러스터에 필요한 총 메모리 양에 영향을 줍니다.

  • 사용자 지정 영역의 사용을 고려합니다. 영역은 하나의 캐시 서버에만 있으므로 한 영역의 항목을 모든 캐시 호스트에 분산할 수 없습니다. 하나 이상의 큰 영역이 단일 캐시 서버에 있는 경우 다른 캐시 서버에 사용 가능한 메모리가 있어도 해당 서버에서 정체된 상태가 발생할 수 있습니다.

ConnectionTerminated

ConnectionTerminated 오류 코드는 캐시 클라이언트와 캐시 클러스터 사이의 연결이 중단된 것을 나타냅니다. 이 오류는 네트워크 오류, 캐시 서버 종료 등을 비롯한 다양한 원인이 있을 수 있습니다. 시간 제한 오류와 마찬가지로 ConnectionTerminated 오류도 요청된 작업의 성공 또는 실패를 반영하지 않습니다. 오류 처리기는 두 가능성을 모두 예상해야 합니다.

참고 항목

개념

예외 처리 개요(Windows Server AppFabric 캐싱)

  2011-12-05