2009-05-14 8 views
0

ASP.NET 2.0으로 작성된 응용 프로그램을 프로덕션 환경에 배포했으며 대기 시간 문제가 발생했습니다. 페이지를로드하는 데 약 4-5 초가 소요됩니다. GridView 새로 고침은로드하는 데 시간이 많이 걸립니다.ASP.NET 응용 프로그램 배포 문제

앱이 개발 상자에서 제대로 실행됩니다. 서버에서 다음과 같은 조사를 수행했습니다.

  1. 사용 가능한 메모리를 확인했습니다 ... 80 %가 사용되었습니다.
  2. 는 프로세서 ... 1 %의 성능 모니터에서
  3. 검사 디스크 IO, 서버 설정은 듀얼 2.0 GZH 2기가바이트 RAM

    Sp2을

    의 Windows Server 2003입니다

15 % 미만을 Cheched

SQL Server 2005 및 IIS 만 실행

다른 문제가 있습니까? 나는 또한 오류에 대한 이벤트 로그를 검사했다.

EDITED ~ 내가 방금 가져온 유일한 차이점은 DEV7 상자에 있는데 IE7을 사용하고 있으며 클라이언트가 IE6을 사용하고 있습니다. - 문제가 될 수 있습니까?

업데이트 ~ 모든 클라이언트를 IE8로 업데이트하여 성능이 30 % 향상되었습니다. 마침내 web.config 파일에서 debug = true라는 것을 알게되었습니다. 플러시로 설정하면 앱이 안정된 성능으로 되돌아갔습니다 ... 나는 아직도 그 일을 믿을 수 없습니다.

+0

자체 응용 프로그램 풀에서 실행되고 있습니까? prod 서버의 다른 구성 설정은 무엇입니까? –

+0

기본 설정으로 별도의 앱 풀을 만들었습니다. –

+0

PNG 파일 알파 투명성을 위해 일종의 수정 작업을 수행하는 경우 IE6을로드하는 데 시간이 오래 걸릴 수 있습니다. 너? –

답변

1

응용 프로그램이 디버그 모드로 실행되고 있지 않은지 다시 한 번 확인하십시오. web.config 파일에서 아래의 debug 속성이 false로 설정되어 있는지 확인하십시오.

응용 프로그램을 더 느리게 실행하고 더 많은 시스템 메모리를 사용하는 것 외에 디버깅 모드에서 캐시가 저장되므로 느린 페이지로드가 발생합니다.

+0

이것은 정확하게 나의 괴롭히는 oversight이었다! 어리석은 실수 같은 것을 내가 진지하게 믿을 수 없다! –

0

테스트와 동일한 SQL Server 또는 다른 테스트를 실행하고 있습니까?

시간이 다가옴에 따라 페이지로드에 일부 추적 문을 추가 한 다음 추적을 사용하여 페이지를로드 할 수 있습니다. 그것은 문제를 지적하는 데 도움이 될 수 있습니다.

또한 개발 상자의 사양은 무엇입니까? 똑같다?

+0

다른 데이터베이스 서버가 없습니다. 개발에서 생산으로 데이터베이스를 복사했습니다. 사양은 거의 동일하며 개발 상자에는 1GB RAM이 더 있습니다. –

+0

이것은 1GB RAM의 프로덕션 sql 상자가 있다는 것을 의미합니까? – NotMe

1

페이지 크기도 확인하십시오. 내 개발자 친구는 한 번 전체 테이블을 viewstate에로드했습니다. 12 메가 바이트 페이지는 로컬 컴퓨터에서 개발할 때 미끄러지지 만 생산 과정에서 즉시 눈에 띄게됩니다.

+0

어떻게 확인하나요? –

+0

다운로드 방화범과 YSlow (그 순서대로, 파이어 폭스 전용). YSlow는 귀하의 페이지에 대한 완벽한 분석을 제공합니다. –

2

내가 할 첫 번째 일은 추적을 사용하는 것입니다. (참조 : http://www.4guysfromrolla.com/webtech/081501-1.shtml를)

는 당신에게 페이지 빌드의 각 부분에 걸리는 시간의 아이디어를 제공하기 위해 귀하의 페이지 생성 코드에 포인트를 추적 추가 : 당신이 할 수있는이 방법을

System.Diagnostics.Trace.Write(
       "Starting Page init", 
       "TraceCheck"); 
//Init page 

System.Diagnostics.Trace.Write(
       "End Page init", 
       "TraceCheck"); 

System.Diagnostics.Trace.Write(
       "Starting Data Fetch", 
       "TraceCheck"); 
//Get Data 

System.Diagnostics.Trace.Write(
       "End Data Fetch", 
       "TraceCheck"); 

을 각 단계의 소요 시간을 정확히 확인한 다음 해당 지역을 타겟팅하십시오.

+0

감사. 나는 이것을 줄 것이다. –

0

Visual Studio의 버전에 따라 Team Developer에 조사 할 성능 마법사가 있습니다.

또한 IE 8을 사용하는 경우 프로필러가있어 브라우저에서 사이트로드 시간을 확인할 수 있습니다. 첫 번째로 결정해야 할 사항 중 하나는 시간이 클라이언트 측인지 서버 측인지 여부입니다.

클라이언트 측에서는 사용자가 가지고있는 자바 스크립트를 찾고 최적화/제거하십시오.

서버 쪽면 모든 성능 카운터 (perfmon)를 확인해야합니다. 예를 들어 엄청난 양의 JIT가 진행되어 프로덕션 서버에서 크롤링되는 앱이있었습니다.

또한 웹과 데이터베이스 서버 간의 통신을 확인해야합니다. 검색어는 얼마나 걸립니까? 상자가 디스크 드라이브를 쓰러 뜨리고 있습니까?

관련 문제