2012-03-25 3 views
2

우리는 3 영역, 유니티 의존성 주입, 약 20 경로 Asp.net MVC 3 응용 프로그램이 있습니다. 페이지를 렌더링하는 총 시간은 매우 일정하지 않습니다. 가장 큰 문제는 컨트롤러 내에서 작업 방법을 시작하는 데 걸리는 시간입니다. 동일한 URL을 볼 때에도. 경우에 따라 100 밀리 초 이내에 작업이 시작되는 경우가 있습니다. 개발에서 생산까지 모든 환경에서 발생합니다.문제 해결 Asp.net MVC 3 컨트롤러 성능

아무도 시도 할 신선한 것들이 있습니까?

+0

가비지 수집 문제가있는 것 같습니다. 나는 정확하게 그것을 고치는 방법에 관해 아주 확신하지 않고있다. 그러나 우리는 그것에 관해 연구하고있다. – JustEngland

+0

JustEngland, 비슷한 문제가 있습니다. DI 성능 문제를 해결할 수 있습니까? – Prasad

+0

DI 성능 문제가 있는지 잘 모르겠습니다. 그러나 우리의 DI 구현은 많은 추가 객체를 만들 때 용의주합니다. 우리는 우리의 객체 수명주기 관리를 더 실험했습니다. http://stackoverflow.com/questions/1151201/singleton-per-call-context-web-request-in-unity. 또는 실제 문제는 가비지 수집이 빠르게 완료되는 것입니다. 이 블로그를 읽는 것이 좋습니다 http://samsaffron.com/archive/2011/10/28/in-managed-code-we-trust-our-recent-battles-with-the-net-garbage-collector – JustEngland

답변

0

체크 아웃 MvcMiniProfiler

사용자가 지정한 동작 방법의 일부를 렌더링하는 데 걸리는 시간을 측정 할 수 있습니다.

"조치 방법을 시작하는 데 걸리는 시간"이 무엇인지 확실하지 않습니다.

어쩌면 어떤 불량 행위 필터가 진행되고 있을까요?

+0

요청 시작 이벤트부터 컨트롤러 조치 메소드가 시작될 때까지 최대 2 분이 소요됩니다. 우리는 메모리, CPU 또는 입출력에 어떤 스파이크도 발견하지 못했습니다. – JustEngland

+0

나는 컨트롤러가 해고되기 전에 어떤 일이 일어나고 있는지 알아 내려고하고있다. – JustEngland

+0

DI 컨테이너에 미쳐있는 것이 없다면 HTTP 요청 -> 라우팅 -> 컨트롤러 여야합니다. "초까지"나쁜 것인가? 너는 무엇을 기대하고 있니? – RPM1984

0

죄송합니다. 그러나 이것은 IDependencyResolver 구현과 관련하여 거대한 단일성 (단일성)을 갖는 큰 문제입니다. 네가 기억을 새고있을거야. 귀하의 코멘트에 대한 응답으로

편집

:

거기 발사 정말 컨트롤러 inbetween 더 시간이없고해야하기 때문에 문제가 그대로 메모리 누수 또는 DI 컨테이너가 저를 강타하는 이유 행동이 서로 매우 가까워지면서 발사됩니다. 메모리 누수인지 테스트하는 간단한 방법은 응용 프로그램이 충분한 시간 (30 분에서 2 시간) 동안 방치되지 않도록하고 다시 방문을 시도하는 것입니다. 처음에는 빠르면 메모리 누수가 있음을 나타낼 수 있습니다. 첫 번째 요청이 느린 경우 아마도 다른 것입니다. 메모리 누출이 문제가 아니라면 아마도 더 쉽습니다. 컨트롤러 렌더링이 끝나기 전에 뷰 렌더링을 배제 할 것이라고 말했 읍니다 (다소 시간이 걸릴 수 있습니다). 당신이 말한 것은 당신의 web.config 파일에 대해 궁금합니다. "이것은 개발에서 생산에 이르기까지 모든 환경에서 발생합니다." 아마도 프로덕션 환경이 여전히 debug=true에서 실행 중일 것입니다. 이것들은 제가 지금 생각할 수있는 모든 아이디어입니다.

+0

우리는 어떤 종류의 메모리 스파이크도 경험하지 않고 있습니다. – JustEngland

+0

@JustEngland - 애셋의 보존, 아마도 연결과 같은 메모리 스파이크 일 필요는 없습니다. 그러나 당신이 기억 문제가 아니라고 말하면 나는 당신을 믿는다. 다른 생각들에 대해서는 제 편집을보십시오. –

+0

우리는 좋은 모니터링을 해왔고 메모리는 문제가없는 것 같습니다. 기억 누출이 없다는 것을 증명할 수있는 또 다른 방법이 있다면 나는 모두 귀입니다. 프로덕션 환경에서 web.config는 debug = false로 설정됩니다. – JustEngland