2012-05-10 6 views
-1

저는 여기 새로 왔으며 CPU 사용량과 멀티 스레딩에서 그다지 뛰어납니다. 하지만 왜 내 웹 응용 프로그램이 CPU 프로세스를 너무 많이 소비하는지 궁금합니다. 내 프로그램이하는 일은 백그라운드에서 값을 업데이트하여 사용자가 데이터 처리를 기다릴 필요가 없으며 요청시에만 가져와야합니다. 업데이트 프로세스는 데이터를 업데이트하기 위해 매 5 초마다 8 개의 스레드를 실행하는 실행 프로그램 라이브러리를 사용하여 예약 된 작업입니다. 내 응용 프로그램이 CPU를 너무 많이 소모하는 이유 Java Web App의 CPU 사용률이 높습니다.

지금 궁금하네요. 그것은 나쁜 코드 때문에 또는 낮은 사양 서버 때문입니까?

(2 데이터베이스 내 웹 앱 (1) 주요 응용 프로그램을 실행 2 개 코어) 당신의 도움을 주셔서 감사합니다.

+6

8 개의 스레드가 무엇을하고 있는지 설명하지 않으면 거의 불가능할 것입니다. 얼마나 많은 계산이 필요한가? 얼마나 많은 입출력? 작은 코드 샘플을 보여줄 수 있습니까? – Gray

+1

이것은 내가 잠시 본 가장 모호한 질문 중 하나 일 수밖에 없다. –

+3

안녕하세요, downvoters, 왜 이러시는지 설명해 주시겠습니까? 문제는 합법적입니다. 네, 설명이 잘되어 있지 않지만 인내심을 가져야합니다. 이것은 새로운 사용자, 그는 좋은 질문을하는 법을 배울 것입니다. 처음부터 그를 처벌하지 마라. – AlexR

답변

1

당신은 CPU가 실제로 소비되는 곳을 찾기 위해 응용 프로그램을 프로파일 링 할 필요가있다.

가 (실제로, 당신은 아마 몇 가지 추가 옵션을 설정할

자바 -Xrunhprof ... : Java has some basic profiling methods built in, 또는 환경이 허용하는 경우, 당신은 "HPROF"컴파일러에 내장 실행할 수 있습니다 구글 "HPROF "자세한 내용은.)

후자는 원칙적으로 쉽게,하지만 난 그게 더 유연하고 당신이 그것을 할 수 있기 때문에 자신의 프로파일 루틴을 추가의 가능성을 언급 예를 들어, 다른 프로파일 러를 실행하는 서블릿 환경에서는 더 귀찮습니다. 여기에 누군가가 코드가 비효율적이거나 서버가 스펙을 받고있다하는 문제인지 말을하는

+0

dev 환경에서이 도구를 사용해 볼 것입니다. 어떤 환경에서도 CPU 프로세스를 많이 소비하지는 않습니다.하지만 클라이언트 환경에서는 .. 2 코어 대 4 코어. – Paolo

+0

글쎄, 한 가지 환경에서 다른 환경에서 분명하지 않은 CPU 병목 현상을 볼 수 있도록 다양한 구성을 "사물의 균형을 바꾸는"것이 가능합니다. 이것이 내가 개인적으로 라이브 코드에 "라이브"프로파일 링을 삽입하는 것을 개인적으로 좋아하는 이유는 전혀 다른 설정을 기반으로 두 번째 추측하기보다는 실제로 진행되고있는 것을 볼 수 있기 때문입니다. –

+0

아이를 프로파일 링하고 결과를 알려주세요. 감사합니다. – Paolo

1

파울로,

그것은 불가능합니다. 그것들 중 하나 또는 둘 모두 일 수도 있고 아니면 다른 것일 수도 있습니다.

당신은 당신의 자신의 연구를 좀해야 할 것 같습니다

  • 코드를 프로필. 이렇게하면 웹 애플리케이션이 대부분의 시간을 보내고 있는지 확인할 수 있습니다. 당신이 사용할 수있는 OS 수준의 통계에서

  • 봐. 이것은 실제 문제가 메모리 사용이나 디스크 I/O라는 것을 말해 줄 수 있습니다. 백 엔드 데이터베이스의 성능에

  • 봐. CPU를 많이 사용하고 있습니까?

CPU가 사용되는 영역을 확인한 후에는 문제의 실제 원인을 파악하고 문제를 해결하는 방법을 찾아야합니다. 일단 잠재적 인 수정을 구현하면 프로파일 링 등을 다시 실행하여 도움이되었는지 확인할 수 있습니다.

+0

글쎄,이 말을 잊어 버렸지 만 DB는 제 어플리케이션보다 훨씬 많은 시간을 소비합니다 ..하지만 각 프로세스를 타이밍 한 후에는 각 태스크를 빨리 완료해야합니다. . 비록 그것을 프로파일 링하지 않았습니다 .. – Paolo

관련 문제