IE의 CPU 사용률이 100 %입니다.


3

정상적인 상호 작용 과정에서 IE가 중단되는 웹 응용 프로그램이 있습니다. "IE가 중지되었습니다"라는 말은 IE가 더 이상 응답하지 않고 CPU의 100 %를 사용한다는 의미입니다. 이 상태에서 벗어나는 유일한 방법은 IE 프로세스를 중지하는 것입니다. 앱 정보 :

  • 브라우저에서 한 페이지 만로드하고 Ajax 쿼리를 사용하여 서버와 통신하고 DOM을 업데이트합니다.
  • IE6과 IE7 모두에서이를 재현 할 수 있지만 Firefox 나 Safari에서는 재생할 수 없습니다.

누군가가 이것을 이미 보았는지 궁금 해서요.이 경우 인터넷을 사용할 수있는 몇 가지 알려진 사례가 있거나 CPU 상태를 100 % 사용하고 있습니다.

  0

안녕하세요,이 페이지를 인터넷에서 볼 수 있습니까? 덕분에 22 feb. 092009-02-22 05:51:58

  0

불행히도, 이것은 클라이언트를 위해 만들어졌으며 공개되지 않은 앱입니다. 22 feb. 092009-02-22 06:16:18

  0

페이지의 HTML/자바 스크립트 중 일부를 게시 할 수 있습니까? 또한 페이지의 메모리 사용량에 대한 정보를 제공 할 수 있습니까? 그것은 높은가요? 그것은 올라 갔습니까? 22 feb. 092009-02-22 06:33:36

  0

페이지가 아주 큽니다. 약 1MB의 HTML, 600KB의 JavaScript (최소화 된 파일 하나의 파일로 결합)가 있습니다. 페이지를로드 할 때 IE7 mem 사용이 20MB 증가합니다. 페이지를 사용할 때 40MB가 추가로 증가합니다. In은 정지하기 전에 또 다른 50MB를 증가시킵니다. 22 feb. 092009-02-22 06:45:52

  0

@BobbyShaftoe 죄송합니다. 클라이언트 용으로 제작 된 응용 프로그램이기 때문에 여기서는 많이 공유 할 수 없습니다. 어떤 코드도 포함하지 않는 재현 가능한 테스트 케이스를 만들어야합니다. 불가능한 것 같습니다. :) 22 feb. 092009-02-22 06:47:14

  0

Alessandro, IE는 XPATH를 사용하여 DOM에서 요소를 찾는데 매우 좋지 않지만 (느린) DOM을 조작하는 것은 매우 나쁩니다 (하위 노드 추가).) AJAX는 DOM에서 어떤 종류의 작업을 수행합니까? (읽기 및 쓰기 모두) 22 feb. 092009-02-22 08:29:44

  0

꽤 무거운 페이지입니다. 22 feb. 092009-02-22 15:52:48

  0

@BobbyShaftoe 네, 사실입니다 :). 22 feb. 092009-02-22 21:02:48

  0

@Vlad Romascanu, 페이지의 방대한 업데이트 (예 : 읽고 쓰기)를 포함한 모든 종류의 작업을 수행하고 있습니다. 22 feb. 092009-02-22 21:04:02

  0

알레산드로,이 문제를 해결해 봤어? 우리는 아주 비슷한 것을 실행하고 있습니다. 감사. 06 may. 102010-05-06 19:04:40

0

문제 추적을 시도 했습니까? IE8에서 문제가 발생하면 console.log 명령과 내장 된 멋진 디버거/dev 도구를 사용할 수 있습니다. 그렇지 않으면 IE 또는 경고 용으로 기존 dev 도구 모음을 사용하십시오. 문제를 줄이려고 시도한 다음 버그를 신고하십시오 (여기에 코드를 붙여주십시오).

  0

코드가 console.log()로 뿌려졌지만 도움이되지 않았습니다. 나는 또한 당신이 여기에 볼 수있는 스택 추적을 가지고 : http://stackoverflow.com/questions/576349/ie-hanging-with-100-cpu-got-stack-trace 26 feb. 092009-02-26 03:05:39


1

(내 경우 Visual Studio를 통해) 스크립트 디버거를 연결하고 원인을 확인하십시오.

대부분 무한 루프를 실행하는 자바 스크립트이거나 아약스 요청별로 수행해야 할 작업이 너무 빠름을 반복합니다. http://www.microsoft.com/whdc/devtools/debugging/

  0

하지만 이것이 무슨 일이 일어나고 있다면, t IE는 일정 시간이 지난 후 스크립트 실행을 중지하도록 제안합니까? 적어도 IE에서 무한 루프를 작성할 때이 메시지를 보는 데 익숙합니다. IE가 오랫동안 실행되는 스크립트를 감지하지 못하는 경우가 있습니까? 22 feb. 092009-02-22 06:06:51

  0

@ Alessandro-Vernet, 그 오류는 상황에서만 발생합니다. 당신 말이 맞아요, 도움이 될 수 있지만 그 메시지를받지 못하는 곳에서 발생할 수있는 큰 종류의 상황이 있습니다. 22 feb. 092009-02-22 06:30:59

  0

@BobbyShaftoe 흥미롭게도 무한 루프가 IE를 중단시킬 수 있다는 것을 알지 못했습니다. 그 정보를 가져 주셔서 감사합니다. 나는 이것을 IE8로 테스트하고 이것을 디버깅하기 위해 IE8 툴을 사용할 것을 제안한 다른 사용자의 조언을 따르도록 노력할 것이다. 22 feb. 092009-02-22 06:33:24

  0

나는 FF로 이것을 보았지만 결코 IE를 보지 못했다. George Reilly의 대답은 유망한 것으로 들립니다. 22 feb. 092009-02-22 08:58:40

  0

그것은 막혀있는 곳에 따라 다릅니다. 자바 스크립트 엔진에있을 수 있습니다. HTML 레이아웃 엔진이나 다른 원시 코드에있을 수 있습니다.이 경우 스크립트 디버거가 도움이되지 않습니다. 내가 준 WinDbg 트릭은 무슨 일이 일어나는지 정확히 알려줍니다. 23 feb. 092009-02-23 01:54:50

  0

조지, 자바 스크립트 엔진에서는 일어나지 않습니다. 스택 추적을 얻기 위해 메서드를 사용하고 여기에 게시했습니다. http://stackoverflow.com/questions/576349/ie-hanging-with-100-cpu-got-stack-trace 26 feb. 092009-02-26 03:06:42


6

사용 WinDbg는이 문제가있는 IE 프로세스를 연결합니다.

.symfix + 명령은 기호 경로가 Microsoft 기호 서버를 가리 키도록 설정하고 디버그 기호를 로컬로 캐시합니다.

! runaway 명령은 프로세스의 모든 스택을 열거하고 어떤 프로세스가 광포하게 진행되는지 알려줍니다.

행운이있는 경우 스택 맨 위에 정규식 바꾸기와 같은 인식 가능한 항목이 표시 될 수 있습니다. 아니면 레이아웃 엔진이 무한 루프에 빠졌을 수도 있습니다. 이들 모두는 과거에 나에게 일어났다.

콜 스택이 이해가 안되면 'g'를 사용하여 프로세스를 진행시키고 몇 초 후에 Ctrl + Break를 누른 다음 다시 시도하십시오!

심볼을 로컬에서 가져온 후에는 SysInternals의 프로세스 탐색기를 사용하여 프로세스의 스택을 볼 수도 있습니다. c : \ Program Files \ Debugging Tools for Windows \ sym와 같은 로컬 심볼 캐시를 가리 키도록 프로세스 탐색기의 심볼 옵션을 구성하십시오.

  0

@George V. Reilly, This 좋은 팁입니다. 나는 이것을 분명히 시험해야 할 것이다. 22 feb. 092009-02-22 21:07:21

  0

@George V. Reilly, BTW, 귀하가 권장하는 Microsoft 사이트의 그림에서 구매하고 있습니까? ;) 22 feb. 092009-02-22 21:08:24

  0

Heh. 아니. 하지만 저는 "Beginning ATL COM Programming"표지에 수염을 쓴 백인들과 안경을 쓴 백인 중 한 명입니다. 23 feb. 092009-02-23 01:52:37

  0

@ George, :). 그래서 우리는 좋은 회사에 있습니다. 나는이 Professional XML 책의 오른쪽에있는 사람이다. http://www.wrox.com/WileyCDA/WroxTitle/productCd-0471777773.html 26 feb. 092009-02-26 03:08:49