2017-09-19 16 views
0

Azure Redis 인스턴스를 호출하는 Asp.Net Azure 웹 응용 프로그램이 있습니다. 나는 레디 스에게 타임 아웃을 계속하고있다. 내가받는 메시지는 아래와 같습니다.Azure Redis timeouts

inst: 1, mgr: Inactive, err: never, queue: 120, qu: 0, qs: 120, qc: 0, wr: 0, wq: 0, in: 65536, ar: 0, clientName: RD0004FFA37AA4, serverEndpoint: Unspecified/server.redis.cache.windows.net:6380, keyHashSlot: 11524, IOCP: (Busy=0,Free=1000,Min=4,Max=1000), WORKER: (Busy=21,Free=8170,Min=200,Max=8191) 

app와 redis는 모두 같은 지역 (미국 동부 표준시 2)에 있습니다.

답변

0

갖는 "에서 : 65536의"오류 메시지가 클라이언트 커널 소켓에 앉아 65536 바이트 버퍼 처리 할 준비 수신하지만 아직 클라이언트 응용 프로그램에 의해 해석되지 않았 음을 나타냅니다.

저는 두 경우에이를 보았다 :

  1. 스레드 풀 설정 (as described here)을 조정해야합니다. 그러나 위에 제공된 오류 메시지는 문제가 있음을 나타내지 않습니다. 다른 오류가 발생하지 않았는지 확인하기 위해 더 많은 오류 샘플을 확인하십시오.
  2. 클라이언트 측 CPU가 뜨겁습니다. CPU가 높으면 소켓 수신 이벤트를 처리하는 코드가 적시에 트리거되지 않으므로 처리 코드는 커널 버퍼의 대기 데이터를 구문 분석하지 않습니다. 클라이언트 CPU 히스토리를 확인하십시오. CPU가주기적인 주기로 캡처되기 때문에 CPU의 수명이 짧은 스파이크 (spike)가 하늘색 메트릭에 표시되지 않을 수도 있습니다 (매 20 초마다 생각합니다). 이러한 샘플간에 스파이크가 발생하고 짧으면 메트릭 수집 시스템에서 발견되지 않을 수 있습니다.

기타 공통 client-side causes are documented herecommon server-side errors are documented here.

+0

문서를 기반으로 작업자 밟기가 증가 했으므로 문제가되지 않습니다. 당신이 말했듯이 CPU 일 수도 있고 Azure 메트릭에 나타나지 않습니다. 내가 거기에서 무엇인가 찾을 수 있는지 알 것이다. – Bipindas

+0

시간 초과시 CPU 사용량을 확보하는 확실한 방법 중 하나는 프로세스 덤프를 캡처하는 것입니다. – JonCole

+0

이것은 Azure 앱 서비스이므로 어떻게 할 것인지 잘 모릅니다. 지금은 대규모 컬렉션을 저장하기 위해 Redis를 사용하지 않습니다. – Bipindas