
우리는 성능이 매우 뛰어난 웹 사이트를 Azure에 배포했습니다. 로드가 증가하면 응답 시간이 분 단위로 늘어납니다! CPU 로드는 40% 영역 어딘가로 높지도 않습니다(중간 인스턴스(S2) 하나를 실행합니다).
많은 디버깅을 한 후(이 문제의 원인이 무엇인지 전혀 알 수 없음) 마침내 요청이 대기열에 대기 중이라는 'FREB' 로그를 발견했습니다.
- AspNetStart Data1="GET", Data2="/profiel/aanvullen", Data3="" 13:48:44.279
- AspNetReq대기중 13:48:44.810
- AspNetReq큐에서 제거됨 13:49:39.545
- AspNetAppDomainEnter Data1="/LM/W3SVC/xxxx/ROOT-1-xxxxx
Azure 인스턴스는 기본적으로 '최적'으로 구성되므로 maxconnection
또는 maxConcurrentThreadsPerCPU
. 이 사이트는 데이터베이스를 사용하지 않지만 2개의 다른 REST API를 호출하므로 대기열이 발생할 것이라고 생각했습니다. 속성을 확인하려고 시도했지만 webrequest.ServicePoint.ConnectionLimit
2백만과 같은 값이 인쇄된 것으로 기억합니다(또는 최대 정수였을 수도 있음).
CPU 사용량이 낮기 때문에 Azure는 새 인스턴스를 가동하지 않으며 다른 인스턴스가 도움이 될 것이라고 생각하지 않습니다.
기본적으로 두 가지 질문이 있습니다.
- 이 문제의 원인은 무엇일까요? / 무엇을 바꿔야 하나요?
- 이것을 어떻게 디버깅할 수 있나요? Azure에는 너무 많은 그래프와 설정이 있습니다. 내가 보고 싶은 것을 정확히 어디서 볼 수 있는지 잘 모르겠습니다. 대역폭에 병목 현상이 발생합니까, 특정 웹 서비스에 대한 공개 요청 수, 기타 등등이 있습니까?