2010-11-27 5 views
1

우리는 asp.net 1.1을 기반으로하는 웹 응용 프로그램이 있습니다. 웹 서버에 배포했지만 문제가 있습니다. 웹 서버에서 cpu 사용이 100 %로 증가하고 outofmemory 예외가 발생하는 경우가 있습니다.Cpu 및 Outofmemory 예외 사용

프로젝트 내에 잘못된 코드가 있다고 생각하지만 어디 있는지 알 수 없습니다.

이제 문제를 찾는 방법과 어떤 종류의 코드로 인해 CPU 사용량이 증가하는지에 대한 조언을 듣고 싶습니다.

+1

이 질문에 심각합니까? 증가 된 CPU 사용에 대해 가능한 무한대의 경우가 있습니다. 그래서 저는 여러분의 입장에서이 애플리케이션이 무엇을하고 있는지, 코드화 된 방법을 정확히 기술함으로써 시작 하겠지요 ... 물론 더 자세한 정보를 제공할수록 좋은 대답을 얻을 수 있습니다. –

+0

당신이 옳을 수도 있습니다. 그러나 서버에서 본 흥미로운 점이 있습니다. 시스템이 OOM 예외를 throw하기 전에 CPU 사용이 100 %가되고 이벤트 뷰에 ID 1078의 이벤트 로그가 발생하고 w3wp.exe는 1200k 메모리를 사용합니다. – mavera

+0

@mavera, 이것은 전혀 도움이되지 않습니다. 증가 된 CPU 사용량을 보았을 때 응용 프로그램은 무엇을 했습니까? 데이터베이스 액세스, XML 파일 파싱, 무한 정밀도로 PI 계산, 미사일 발사 ...? –

답변

0

가비지 컬렉터가 어떤 이유로 가정 한 것처럼 보이지 않습니다. 긴 루프 안에 변수 선언이있는 코드를 살펴 보는 것이 좋습니다. 예를 들어, 당신은 다음과 같이 루프를 확인해야합니다

dim c as car 
for i as integer = 0 to 20 
    c= new car 
    c.brand="" 
Next 

위의 루프가 그래서 당신은 객체를 사용하여 완료 할 때 dispose()를 호출해야 할 쓰레기를 많이 만듭니다.

확인할 다른 문제는 재귀입니다. 재귀 호출이있는 경우에는 브레이크 조건이 올바른지 확인하고 다음 재귀에서 점프하기 전에 dispose()을 호출해야합니다.

+0

투표에 부정적인 의견이 있으면 왜 동의하지 않는지 설명해주십시오. –

+0

이 답변으로 인해 유감스럽게 생각합니다. 메모리 부족 예외가 GC가 작동하지 않는다고 반드시 표시하는 것은 아니며 재귀 호출을 검색하는 것은 시간 낭비입니다. 추측을하기보다 먼저 오류를 프로파일 링해야합니다. –

+0

나는 GC가 작동하지 않는다고 말하지 않았다. 오류의 원인이 될 수있는 나쁜 프로그래밍 습관 때문에 작동하지 않는다고 말했다. 이는 프로파일 링을 수행하는 데 많은 시간을 절약 할 수있는 코드에서 가장 먼저 살펴볼 내용입니다. –

-1

일단 배포 한 후 디버깅하는 방법을 모르는 경우 배우기 위해 가장 먼저 배워야 할 곳은 Tess Ferrandez's blog입니다. 를 클릭하고 읽으십시오. 많이. :) debugging labs으로 시작하는 것이 좋습니다.