2009-04-21 4 views
3

다소 고전적인 asp/SQL Server 응용 프로그램에서 작업하고 있습니다. 몇 달 전에 새로운 기능이 추가되어 새 버전이 출시되었습니다. 매우 기초적인 일부 페이지는 무작위로 실행하는 데 오랜 시간이 걸립니다.일부 고전 ASP 페이지가 임의로 실행되는 데 오랜 시간이 걸리는 이유를 어떻게 알 수 있습니까?

몇 가지 단서 :

  • 그것은 데이터베이스가되지 않습니다 : 내가 쿼리 프로파일 러를 실행할 때 내가 진단 도구, reqviewer 쇼를 IIS 실행하면, 어떤 오래 실행되는 쿼리
  • 를 감지하지 않습니다 요청이 상태 "처리 중"입니다.
  • 이것은 모든 페이지에서 발생할 수 있습니다.
  • 쉽게 재현 할 수 없으며 완전히 무작위입니다.
  • "매우 긴 시간"이라는 아이디어를 얻으려면 : 오늘 아침에 나는 페이지를 100 밀리 초 만에 클라이언트에 리턴해야 할 때 실행하는데 5 분 이상 걸렸습니다.
  • 응용 프로그램은 파일 크기가 최대 2GB 인 다소 큰 업로드 및 다운로드를 처리 할 수 ​​있습니다. 이것은 또한 SoftArtisan FileUp을 사용하는 고전적인 ASP 스크립트로 처리됩니다. 문제가 발생할 수 있다고 생각하지 마십시오, 우리는 지금 꽤 오랫동안 이러한 업로드를했습니다.
  • 두 개의 서로 다른 서버에서 서로 다른 데이터 집합을 사용하여 문제가 발생했습니다. 하나는 SQL Server 2000으로 응용 프로그램을 실행하고 다른 하나는 SQL Server 2005를 실행합니다. 두 경우 모두 웹 서버는 IIS 6입니다.

어떤 문제인지 또는 그런 종류의 문제를 해결하는 방법에 대해 알고 싶습니다.

감사합니다.

세바스티안


편집 :

문제는 메모리 조각화에서왔다. 일부 ASP 페이지는 서버에서 파일을 다운로드하는 데 사용되었습니다. 파일 크기는 몇 킬로 비트에서 2GB 이상이 될 수 있습니다. 이러한 크기의 차이로 인해 메모리 조각화가 발생했습니다. asp 페이지는 실행에 꽤 많은 시간이 걸릴 수 있습니다 (사용자가 페이지를 다운로드 할 때 IIS에서 캐시에 넣은 시간을 뺀 값). 이는 신속하게 실행해야하는 서버 페이지의 표준이 아닙니다. 수 특정 풀에서 해당 ASP 페이지를 넣어 저를 허용

  • 을 해제
    • 세션으로 단일 ASP 페이지에있는 모든 다운로드 로직을 넣어 :

      내가 일을 개선하기 위해 무슨 짓 모든 너무 자주 메모리 조각화를
    을 줄이기 위해, Windows 2003에서 기본적으로하지 않습니다 LFH (저 Fragmention 힙)에
  • 의 전원을 켭니다 (다운로드는 이제 더 이상 응용 프로그램의 나머지 부분을 방해 것) 재활용되지 LFH에 대한 53,691,363,210

    참조 :

  • 답변

    1

    모든 페이지 또는 일반적인 페이지 하위 집합에 대해 문제가 있는지 여부를 결정할 수 있습니까?

    하위 집합이 이러한 페이지에 공통적으로 사용되는 항목을 검사하는 경우 (예 : 모두 특정 COM DLL을 사용하며 다른 페이지에서는 그렇지 않음).

    이 문제는 여러 클라이언트 또는 일부 클라이언트에만 영향을 줍니까?

    IOW는 특정 브라우저 OS 버전에 문제가 있습니다.

    공개 또는 인트라넷입니까?

    소유하고있는 클라이언트에서 문제를 재현 할 수 있습니까?

    +0

    페이지 하위 집합에 대한 좋은 아이디어입니다. 사용자의 페이지 집합으로 범위를 좁히면 사용자에게 표시됩니다. 재생산의 문제점은 그것이 무작위 적이라는 것입니다. 당신은 잠시 동안 일할 것이고 갑자기 IIS가 몇 분 동안 매달린 것처럼 보입니다. 다른 브라우저 세션을 시작하면 똑같은 페이지로 이동하면 빠른 결과를 얻을 수 있습니다. 브라우저 OS 버전에만 해당되는 것은 아닙니다. 공개적입니다. 임의이거나 보이므로 복제 할 수 없습니다. –

    +0

    규칙을 찾을 수 없습니다. 나는 마침내 2에서 IIS ans SQLServer를 리셋하는 작업을 설정했고, 그 트릭을 수행하는 것처럼 보입니다 ... 지금 당장은로드가 다시 나타날 때 증가 할 것이라고 가정합니다. 아마 다음 Microsoft PSS에 연락 할 것입니다 ... 좋은 리드 주셔서 감사! –

    1

    SQL Server에서 전체 텍스트 검색 쿼리가 실행될 가능성이 있습니까?

    그렇다면 SQL Server가 인터넷에 액세스 할 수 없기 때문에 SQL Server 2000에는 적용되지 않지만 인증 확인을 시도 할 때마다 몇 시간마다 45 초 지연이 발생할 수 있습니다.

    제가 언급 한 것에 대한 자세한 설명은 read this입니다.

    +0

    전체 텍스트 검색 쿼리가 있지만 sqlserver는 인터넷에 액세스 할 수 있습니다.감사합니다 –

    1

    웹 서버에서 실행중인 다른 앱이 있습니까? 그렇다면 동일한 앱 풀에서 문제가 있습니까? 그렇다면 전용 응용 프로그램 풀을 만들어보십시오. 어쩌면 다른 앱 중 하나에 문제가있어 앱에 나쁜 영향을 줄 수 있습니다.

    +0

    응용 프로그램이 수영장에 혼자 있습니다. 감사합니다 ... –

    2

    내가 작업 한 고전 ASP + Ajax 응용 프로그램에서 똑같은 것으로 나타났습니다. Timer를 사용하여 페이지로드 시간을 153 밀리 초로 제한했지만 방화탄 폭포 차트에서는 3.5 초라고 말합니다. Timer 출력은 응답이며 폭포수 차트는 Firefox가 서버의 응답을 기다리고 있다고 주장합니다. 폭포수 차트에도 응답이 나와 있기 때문에 폭포수 차트를 타이머와 비교할 수 있습니다. '매우 자주 발생하는'큰 불일치가 있습니다.

    1

    IIS에서 서버 측 디버깅이 켜져있는 경우, 웹 서버는 단일 스레드 모드에서 실행됩니다.

    그래서 페이지를로드하려고 시도하고 다른 누군가가 동시에 해당 URL을 클릭하면 그 뒤에 대기열에 들어갑니다. 그것은 페이지가로드하는 데 오랜 시간이 걸리는 것처럼 보일 것입니다. 그러나 서버가 단일 파일 행에서 페이지 요청을 doling하고 때로는 행의 맨 앞에 있지 않기 때문입니다.

    디버깅을 위해 이것을 켜고 프로덕션을 위해 이것을 꺼 놓은 것을 잊었을 수 있습니다.

    +0

    아이디어를 가져 주셔서 감사합니다. 나는 서버를 점검하고 서버 측 디버깅은 꺼져 있었다. –

    관련 문제