2014-04-28 3 views
1

미니 프로파일 러를 사용하는 ASP.NET MVC 4 웹 사이트가 있습니다. 최근에는 더 많은 대화식 페이지를 위해 SignalR을 사용하기 시작했습니다.미니 프로파일 러 및 SignalR

오랜 시간 열려 있어도 SignalR 페이지에 문제가 있습니다. 미니 프로파일 러는 SignalR 요청이 열려있는 시간이 길기 때문에 산술 오버 플로우 오류를 자주 생성합니다. Mini Profiler가 SignalR 요청을 무시할 수 있음을 이해합니다 MVC Mini Profiler Exception on MiniProfiler.Stop().

그러나 미니 프로파일 러를 사용하여 요청한 내 개별 SignalR 작업의 성능을 분석하는 데 여전히 열의가 있습니다. 이 일을 할 수있는 방법이 있습니까?

+0

일부 SingalR 요청은 항상 잠시 동안 열리고 일부는 열리지 않습니다. 아니면 어떤 것이 든 될 수 있습니까? –

+0

@ YaakovEllis 일부 SignalR 요청은 수명이 짧습니다. 주된 것은 지속적인 연결입니다. 관심있는 부분은 기본 영구 연결 내에서 발생하는 하위 요청에 대한 성능 데이터를 수집하는 것입니다. –

답변

1

MiniProfiler가 실행되는 기본 방법은 요청 시작시 Start()으로 전화하는 것입니다.이 방법은 MiniProfiler 인스턴스를 초기화하여 타이밍을 수집합니다. 그런 다음 요청이 끝날 때 Stop()으로 전화하면 시간이 기록됩니다.

요청이 너무 오래 진행되므로이 ​​작업을 수행 할 수 없습니다. 그러나 여전히 하나의 전체 SignalR 요청 내에서 개별 동작에 대한 타이밍을 기록하고 싶습니다.

이 모델에서 사용자의 작업은 웹 응용 프로그램에서 일반적인 http 요청으로 간주되는 것과 훨씬 더 비슷합니다. 따라서 각각의 작업을 시작할 때 MiniProfiler.Start()을 실행하고 이들 각각의 끝에 MiniProfiler.Stop()을 실행하여 각각을 자체 엔드 투 엔드 단위로 처리하고 (프로필 정보 저장 Stop()에 전화 할 때마다).

Start Main SignalR Connection 

    SignalR Request Action1 
    MiniProfiler.Start() 
    Perform Action 
    MiniProfiler.Stop() 
    End SignalR Request Action1 

    SignalR Request Action2 
    MiniProfiler.Start() 
    Perform Action 
    MiniProfiler.Stop() 
    End SignalR Request Action2 

    ... Many More Actions ... 

End Main SignalR Connection 
+0

응답 해 주셔서 감사합니다. 필자의 경우 SignalR 허브 작업에서 MiniProfiler.Stop()을 호출하면 프로필 정보가 저장되지 않는 것처럼 보입니다. 일반적으로 분석을 위해 MiniProfiler 결과를 데이터베이스에 저장합니다. SignalR 허브 동작은 UI에 표시되지 않습니다. UI에 대해서는 놀랄 일도 아니고, 실제로 신경 쓰지도 않습니다. 제 질문은 실제로 다른 질문입니까, 즉 MiniProfiler가 비 UI 작업을 기록하는 방법은 무엇입니까? –

+0

추가 조사에서 내 문제는 내 MiniProfiler.Current가 SignalR 허브 클래스에서 null이므로 시작 및 중지가 아무 효과가없는 것 같습니다. 나는 이것에 대한 정확한 문맥을 설정하는 방법을 찾고있다. –