SS 4.5.2를 사용하여 Linux/Mono (내 하드웨어에서)에서 Azure App Service로 ServiceStack API를 옮깁니다. Redis 캐시는 Linux VM에서 실행되는 3.2입니다. 나는 Azure Redis 서비스를 사용하여 이 아니며입니다. 나는이 예외를보고 있어요ServiceStack.Redis 시간 초과 Azure에서
이 무작위로 보이는 슬로우 :
RedisException을 - 0시 0분 3초
예외의 초과 시간 초과하면 인증합니다 속성을 사용하여 서비스에서 던진 것 같다 모든 스택 추적에는 "ServiceStack.ServiceExtensions.GetSession" 및 "ServiceStack.AuthenticateAttribute.Execute"이 포함되어 있습니다. 현재 세션 저장을 위해 Redis 만 사용 중이므로이 비트는 놀랄 일이 아닙니다.
몇 시간 동안 생산에 내 이전 리눅스/모노 설정에 작업 된 다음과 같이 내 ICacheClient를 등록 해요 : 나는 SS 형태의 게시물을 참조 않았다
container.Register<IRedisClientsManager>(c =>
new RedisManagerPool("SomeRedisMachine:6379"));
container.Register(c => c.Resolve<IRedisClientsManager>().GetCacheClient());
: https://forums.servicestack.net/t/redis-exception-exceeded-timeout-of-00-00-03/2301 - 그러나 이것은 Azure Redis 서비스를 사용할 때만 적용되는 것으로 보이지만 그렇지 않습니다. 이 정보 감안할 때
, 나는에 대한 답변을 찾을해야합니다 몇 가지 질문이 있습니다 :- 합니까 여기에 대한 긍정적 인 영향은 더 높은 계층에 레디 스 VM을 이동? 현재 VM은 사용 가능한 가장 작은 것 중 하나입니다. 나는 오늘 이것을 시도 할 것이다. 업데이트 : VM 크기를 늘리면 문제가 해결되지 않는 것 같습니다.
- Redis VM과 App 서비스 간의 대기 시간이 너무 깁니까? 동일한 데이터 센터에있는 경우 이것이 문제라고 생각할 수 없습니다.
- 내가 고려해야 할 Linux/Mono와 Azure App Service (Windows, 일종의 수정 된 IIS가 뒷받침 됨) 사이에는 약간의 차이점이 있습니까?
사전 통찰력에 감사드립니다!
업데이트 mythz 제안 사항에 따라
, 나는 SS의 v4.5.4로 업데이 트를했다. 그러나 예외는 여전히 언급 된 업데이트 된 시간 제한과 일치하는 약간 다른 메시지 (00:00:10의 Exceeded timeout)로 인해 발생합니다.
Azure Redis Service (Linux VM과 반대)를 대상으로하기로했습니다. 지금까지 ServiceStack 4.5.2 또는 4.5.4에서 Redis와 관련된 오류는 없었습니다. 아마도 Microsoft가 자체 Redis 서비스에 사용하는 호스트가 네트워크 연결이 더 좋거나 응용 프로그램 서비스를 처리하는 클러스터에 더 가깝습니다.
추가 질문에 대한 연구 결과가 업데이트되었습니다. 나는 그것이 Linux VM이 어디에 있든 관계없이 네트워크 상태와 관련이 있다는 것에 동의합니다. Azure Redis 서비스는 완벽하게 작동합니다. – SeanH