2017-09-08 1 views
1

좋아요, 트래픽이 많은 앱 (초당 약 17 건)이 있습니다. 이 앱은 .Net Core 2.0 (최근에 업그레이드 됨)으로 제작 된 REST API입니다..Net Core 2.0 웹 API - 소멸자 관련 문제로 인해 서버가 깨졌습니다.

응용 프로그램은 Azure에서 호스팅되며 우리는 서버가 매우 느리게 (일주일 넘게) 모든 처리기와 리소스를 먹어 버리고 결국 충돌 할 수 있다는 메모리 누수처럼 보이는 문제가 있습니다.

나는 MS 지원 부서에 좋은 말을 해 주었고 문제를 좁히는 데 도움이되었습니다. 여기에 마지막 이메일입니다 :

"우리는 GC 힙 단편화로 이어질하고 응용 프로그램에 따라서 높은 메모리 사용 할 수 있습니다 ( 85000 바이트 이상의 문자열과 배열) 큰 개체의 높은 금액을보고있는 우리는 조사되었다. 소멸자를 관리하고 나는 당신에게 다음과 같은 문서를 제공 할 수있는 방법 :

.NET 코어의 소멸자와 관련된 자세한 설명서를 계속 찾고 있습니다. "

이 후 그들은 기본적으로 푸른 비난하지 않았다 내가

그래서 내가 대신 여기에오고 있어요 ... 약 $ 500의 가격으로 제공되는 "코드"지원 티켓을 열 필요가 있다고 말했다. :)

저는 15 년 넘게 .Net 개발자 였지만 .Net Core를 처음 사용했습니다. 이 위대한 기사를 발견하여 내 API의 백본으로 사용했습니다 (https://chsakell.com/2016/06/23/rest-apis-using-asp-net-core-and-entity-framework-core/).

다른 .Net 핵심 사례와 비교했을 때 "우수 사례"를 따르고 있다고 합리적으로 확신 할 수 있지만 그럴 수는 있습니다.

내 두려움은 .Net Core (근원 MS가 추천 한 그 기사들)에 근본적인 문제가 있지만 그 답을 찾는 방법을 모르겠다는 것입니다. 이 때문에 코드를 다시 작성하고 싶지는 않지만 때때로 서버를 다시 부팅 할 때를 제외하고 내 옵션이 무엇인지 확실하지 않습니다.

생각?

+0

이 근본 문제로 인해 프로그램이 너무 많이 의존 종료 자에 만에 정말없는 것 같다 대형 개체 힙 (메모리 조각화 및 고비용 압축 프로세스가 발생) 그래서 당신이 대답 할 필요가있는 첫 번째 질문은 그 할당이 어디서 오는지입니다. –

+1

Kudu에서 덤프 만들기/다운로드를 시작합니다. https://blogs.msdn.microsoft.com/jpsanders/2017/02/02/how-to-get-a-full-memory-dump-in- azure-app-services/그런 다음 Visual Studio 및 "Debug Managed Memory"로 열기 –

+1

코드를 알 수 없습니다. 관리 메모리가 필요한 서비스에 대해 IDisposable 패턴을 올바르게 구현하고 있습니까? – Tseng

답변

관련 문제