2011-10-04 5 views
2

웹 팜에서 호스팅되는 MVC2 + Linq2SQL + MS SQL SERVER 2008로 작성된 웹 응용 프로그램이 있습니다. 아카 마이, 요청의 86 %를 감소 - 거의 stackoverflow.com웹 팜의 ASP.NET MVC2 - 트래픽이 많은 페이지로드가 느림

처럼 우리는 외부 캐시 공급자에 의해 캐시 MS NLB

정적 컨텐츠와 균형 4 × IIS7 + 1 SQL Server 2008의 부하를 가지고있다.

각 웹 서버에는 32GB의 RAM과 4 개의 쿼드 코어 CPU가 있으므로 프런트 엔드에 64 개의 코어가 있습니다.

세션 상태를 테이블에 저장합니다.

중간 트래픽 (페이지로드 = 0.2 초)으로 완벽하게 작동하지만 회사에서 TV 광고를 게재하며이 광고 중에 트래픽이 20-30 초 내에 최대 20,000 명의 사용자에게 노출됩니다.

이 순간 페이지가 8-10 초로 느려집니다. 그러나 CPU 사용량과 메모리 사용량은 모든 시스템에서 40 %까지 도달하지 못합니다.

데이터 센터의 대역폭이 한계 값의 절반에 도달하지 않습니다.

느린 페이지는 1-2 테이블에서만 최대 10 개 레코드의 간단한 SELECT에서 데이터를 생성합니다.

분명히 어딘가에 병목이있어 어디에 있는지 파악하려고합니다.

누구나 내게 문제를 찾을 수있는 조언이 있습니까?

+1

이 테이블에서 너무 많은 SELECT가이 병목 현상을 일으키는 것으로 생각됩니다. WHERE 절을 기반으로 테이블에 적절한 인덱스 등이 있습니까? – Ankur

+0

나는 Ankur에 동의한다. 과도한 양의 쿼리와 같은 소리가 데이터베이스에서 실행됩니다. 인덱스, ToList(), Any() 등의 사용법을 확인하십시오. 이것들은 모두 데이터베이스를 호출하는 함수입니다. 또한 DotTrace와 같은 도구를 사용하여 응용 프로그램을 프로파일하고 어떤 일이 발생하는지 볼 수 있습니다. – Rob

+0

모든 PK 열에 클러스터 된 인덱스가 있으며 실행 계획을 완료했습니다. 추가 색인이 부족하여 이러한 병목 현상이 발생할 것이라고 나는 생각하지 않습니다. 그것은 확실히 도움이되지만 내가 얻을 수있는 작은 비율이 될 것입니다. 나는 큰 이득을 찾고있다. 그래서 나는 또한 SQL 서버 박스의 디스크 I/O에 대해 생각하고 디스크 I/O의 동시성을 향상시키기 위해 데이터베이스를 여러 개의 다른 디스크에있는 몇 개의 서로 다른 파일들로 분리했다. http://tinyurl.com/6xfxuso에서 다음과 같이 말합니다. –

답변

1

언젠가는 문제가 발견되었지만 여기에 게시 할 시간이 없었습니다. 나는 내가 생각할 수있는 모든 가능한 것들을 시도했다 : 인덱스, SQL 최적화, 디스크 I/O 모니터링, 코드 개정. 위의 어떤 것도 내 문제를 해결하지 못했습니다. 나는 우리의 LAN에 2 워크 스테이션에서 웹 스트레스 테스트를 실행하고 초 이내에 전체 페이지를 동결 수 있습니다! 테스트를 실행하는 동안 나는 이상한 것을 발견했습니다. 테스트 용으로 별도의 컨트롤러를 만들었고 두 가지 방법을 사용했습니다. 두 가지 모두 똑같은 일을합니다 : 우리 데이터베이스 서버와 동일한 데이터를 요구합니다.

액션 A)

public ActionResult Index(){ 
var model = new SomeModel(); 
// Get data 
.... 
return View(model); 
} 

액션 B)

public ActionResult Index() { 
var model = new SomeModel(); 
// Get data 
.... 
return View("Index",model); 
} 

페이지 로딩의 차이 :

A) ~ (297), MS

B) ~ 39.47의

ccurs는 동시성이 높은 동안에 만 가능합니다. 그렇지 않으면 정상입니다. MVC2 라이브러리의 기본보기 검색과 같이 보이지만 일단 지정되면 모든 것이 잘 작동하므로 문제가 발생합니다.내 블로그에 설명했다

: 나는 코드 플렉스에 asp.net의 이슈 트래커에 게시했지만 아무도 주석 없다

http://arturito.net/2011/10/24/asp-net-mvc2-in-the-web-farm-slow-page-load-with-high-traffic-where-is-the-bottleneck/

은/아직 응답.

http://aspnet.codeplex.com/workitem/9396

관련 문제