2017-10-16 12 views
0

우리는 우리의 캐시에 연결 코드를 사용하여 다음 (인 - 메모리와 레디 스)됩니다연결 다시 시작한 후 실패 - 푸른

settings .WithSystemRuntimeCacheHandle() .WithExpiration(CacheManager.Core.ExpirationMode.Absolute, defaultExpiryTime) .And .WithRedisConfiguration(CacheManagerRedisConfigurationKey, connectionString) .WithMaxRetries(3) .WithRetryTimeout(100) .WithJsonSerializer() .WithRedisBackplane(CacheManagerRedisConfigurationKey) .WithRedisCacheHandle(CacheManagerRedisConfigurationKey, true) .WithExpiration(CacheManager.Core.ExpirationMode.Absolute, defaultExpiryTime);

그것은 잘 작동하지만 가끔 기계가 자동으로 (다시 시작 푸른에 의해 우리는 그것을 호스트 곳)와 레디 스에 다시 시작 연결 한 후 다음과 같은 예외와 함께 실패 레디 스 자주 묻는 질문 (https://docs.microsoft.com/en-us/azure/redis-cache/cache-faq) 부분에 따르면

Connection to '{connection string}' failed. at CacheManager.Core.BaseCacheManager`1..ctor(String name, ICacheManagerConfiguration configuration) at CacheManager.Core.BaseCacheManager`1..ctor(ICacheManagerConfiguration configuration) at CacheManager.Core.CacheFactory.Build[TCacheValue](String cacheName, Action`1 settings) at CacheManager.Core.CacheFactory.Build(Action`1 settings)

: "왜 내 클라이언트가 캐시에서 연결이 끊어 졌습니까? " 재배포 후에 발생할 수 있습니다.

문제는

  • 어떤 연결을 복원하는 메커니즘 후
  • 우리가 연결

우리는 연결 문자열은 OK입니다 확신을 초기화하는 방법으로 뭔가 잘못입니다 재배치가있다

+1

Redis를 사용할 수없는 경우 CacheManager는 응용 프로그램 시작시 해당 예외를 throw합니다. connectionTimeout 속성을 늘릴 수 있습니다. 도움이 될 수도 있습니다. 몇 번이나 초기화를 수동으로 다시 시도 할 수 있습니다 ... 시작 후, 자동으로 Redis 서버가 다운 된 후 연결이 복구되어야합니다. – MichaC

답변

1

대부분의 클라이언트 (예 : StackExchange.Redis)는 연결 끊기 후에 자동으로 연결/재 연결됩니다. 그러나 연결 제한 시간 설정은 재 연결이 성공적으로 이루어지기 위해 충분히 커야합니다. 단 한번 연결하기 만하면 시스템에 다시 연결할 수있는 충분한 시간을주는 것이 좋습니다. 높은 연결 시간 초과는 특히 CPU가 급증하여 일시적으로 연결되지 않는 연결이 발생한 후 연결이 끊어 지거나 다시 연결될 때 유용합니다.

이 경우 RetryTimeout은 100으로 표시됩니다. 연결 시간 초과 인 경우 밀리 초 단위인지 확인하십시오. 100 밀리 초가 너무 낮습니다. 10 초 정도 더 걸릴 수도 있습니다 (한 번 기억해야하므로 연결할 수있는 시간을 갖기를 원합니다).

+0

은 좋은 생각입니다. 하지만 시간이 지나치게 짧아 지더라도 잠시 후에 연결을 복원해야합니다. 그러나 우리의 경우에는 결코 회복되지 않습니다. 이것에 대한 설명이 있습니까? – jabko87

+0

SignalR을 사용하고 있습니까? 그렇지 않다면 어떤 기술을 사용하고 있습니까? SignalR에는 https : //github.com/SignalR/SignalR/issues/4019에 설명 된 알려진 문제가 있습니다. 또한 Redis의 기본 SKU를 사용하지 않는지 확인하십시오. 단일 노드이므로 OS가 패치되면 패치가 완료 될 때까지 도달 할 수 없습니다. – JonCole