2

나는 약간의 서비스 패브릭 응용 프로그램을 만들고 있으며 서비스 패브릭으로 변환 한 이후 느린 시작 시간에 대해 짜증이 났으며 릴리스 이후뿐만 아니라 10- 비활성 15 분."Hibernating"서비스 패브릭 응용 프로그램

각 서비스로 이동하여 10 초마다 작은 db 요청을하는 것이 유일한 목적 인 응용 프로그램을 추가했습니다.이 응용 프로그램과 ef가 계속 실행됩니다. 이로 인해 타임 아웃이 발생하지 않았으며 이제 첫 번째 요청은 5-15 초 범위에 있습니다. 예열 후 요청은 대개 300ms 범위 내이므로 요청이 매우 쉽고 서비스 간 통신이 많지 않습니다 (총 4 가지 서비스).

많은 검색을 한 후에 가장 많이 보인 것처럼 보이는 프로파일 러를 찾았는데, 대부분 비주얼 스튜디오의 것을 좋아하지 않습니다. 불행히도 스레드를 많이 기다리고 코드에 포함되어 있지 않은 것 외에는별로 그렇게 말할 수 없습니다. 내 모든 외부 요청은 비동기를 기다리고 있습니다. 또한 요청에 따라 누락 된 정보가있는 것처럼 보였습니다 ...

처음에는 검색 쿼리를 생성하는 데 느린 속도가 올 수 있었으므로 대신 해당 부분을 더 이상 사용하도록 마이그레이션했습니다. 약간의 ef) 그러나 그것은 정말로 아무것도 바뀌지 않았다.

응용 프로그램에는 최신 서비스 패브릭, dotnet 코어, ef 코어, 응용 프로그램 통찰력 패키지가 모두 있습니다. 토큰을 검증하는 것을 제외한 모든 서비스는 무국적입니다. 물론 릴리즈 모드로 구축되었습니다.

내가 느린 이유를 찾지 못해이 시점에서 나는 다소 잃어 버렸습니다. 예전에는 이것이 IIS가 응용 프로그램을 종료하거나 재활용하기 때문에 발생했지만 지금은 없을 때 무엇이 ​​될 수 있습니까?

+0

이것을 Azure의 클러스터에 배포 하시겠습니까? 아니면 로컬 컴퓨터에서만이 문제가 발생합니까? –

+0

이 문제는 로컬에서나 하늘에있는 서버 클러스터 3에 배포 할 때 발생합니다. – user1842278

+0

트래픽의 부하가 분산되어 있다고 가정하면 서비스가 해결 될 노드에 대한 일부 로깅을 수행하십시오. 요청 1은 노드 A (15s 응답), 노드 B는 2 (15s 응답), 노드 A는 3 (300ms 응답), 노드 C는 4 (15s 응답)로 갈 수 있습니다. 내가 뭘보고 있는거야? – Mardoxx

답변

0

비슷한 문제가 DI 컨테이너를 사용하지만 서비스에 대한 첫 번째 호출까지 모든 종속성이 해결되지 않으며 이러한 인스턴스를 만드는 데 시간이 걸립니다. 예를 들어 클래스의 싱글 톤. 또 다른 하나는 EF DB 컨텍스트입니다. 이를 극복하기 위해 우리는 먼저 서비스를 "따뜻하게"하는 프로세스를 가지고 있습니다. 이 어둠 속에서 촬영 될 수

+0

몇 분이 지나면 그의 응용 프로그램이 "잠자기"하는 이유는 여기에 해당하지 않습니다! – Mardoxx

0

을하는 데 도움이

희망 : 서비스 패브릭 원격 옵션을 사용 또는 HTTP를 사용하여 통신 당신의 서비스가 있습니까? HTTP의 경우, Hibernation과 Warmup Time이 HttpSys/Kestrel에 의해 발생할 수 있습니까?

다소 느린 느린 응답 (300ms)과 관련하여 우리는 뒷면에 EF와 함께 여러 가지 상태없는 서비스 (HTTP 및 Kestrel 사용)가 있으며 응답 시간은 50ms 이하입니다.