최근에 WebAPI 백엔드를 사용하여 기존 ASP.NET MVC 2 응용 프로그램을 MVC 4로 변환했습니다. 불행히도 WebAPI와 관련하여 심각한 성능 문제가 있음을 알고 있습니다.WebAPI 성능이 좋지 않음
MiniProfiler 설정이 있는데 병목을 식별 할 수 있는지 알아보기 위해 몇 가지 단계가 추가되었습니다. 놀랍게도 데이터베이스가 아닙니다. 변환하기 전에 이와 같은 요청은 ~ 50ms보다 오래 걸리지 않으므로이 간단한 요청이 2 초 이상 걸리는 것을 보는 것은 다소 충격적입니다.
이상한 부분이 모두가 SQL이 자신을 호출에 요청 심지어 그것을 만드는 전에 대기 시간의 대부분이 발생하는 것입니다.
MiniProfiler를 WebAPI의 호출에 더 깊이 묶어서 실제로 실제로 무엇이 진행되고 있는지 더 자세히 조사 할 수있는 방법이 있는지 궁금합니다. 어떤 도움이라도 대단히 감사하겠습니다.
[HttpGet]
public bool AssetExistsById(string assetId) {
using (Current.Profiler.Step("WebAPI Call To Model")) {
return Asset.AssetExists(assetId);
}
}
자산 모델 :
public static bool AssetExists(string assetId) {
using (Current.Profiler.Step("WCF call to DataAccess lib")) {
return WcfEndPoint.AssetExists(assetId);
}
}
감사
FWIW, 여기에 요청
WebAPI 컨트롤러에 사용되는 코드입니다!
그래서 내가 여기에 무슨 일이 있었는지 알게 업데이트 ... 내가 시스템 진단 추적 내 App_Start/WebApiConfig.cs
파일에 사용할 수 있다고 밝혀졌습니다. 나는 다음 줄을 무작위로 주석 처리했으며 모든 것이 수정되었다.
config.EnableSystemDiagnosticsTracing();
다른 사람들에게 도움이되기를 바랍니다.
VS 프로파일을 사용하여 시간이 많이 걸리는 것을 확인해 보셨습니까? –
로드 시간을 테스트하기 위해 웹 응용 프로그램 내에 정적 페이지/이미지가 있습니까? 네트워크/서버 관련 일 수 있습니다. –
@YoussefMoussaoui 응답 해 주셔서 감사합니다! 프로파일 러를 실제로 돌렸지 만, 내 요청이 왜 그렇게 오래 걸리는지에 대해 특별히 흥미로운 것을 찾지 못했습니다 ... 가장 긴 부분은 요청 라우팅 이었지만 상대적으로 짧았습니다. 아마도 잘못된 프로파일 러를 사용하고 있습니까? 도움이된다면 VS2012를 사용하고 있습니다. –