2011-08-15 5 views
3

CentOS 5.4 VPS에서 Java 서버를 실행 중입니다. VPS 통계 : - 2.5GHz의 싱글 코어 CPU - RAM 2GB의 - 오픈 JDK 1.6Java 메소드 실행 시간이 높음

내가 자바 과정에서 매우 높은 CPU 사용량을 경험하고있다 (썬 JDK 1.7도 시도). 그런 다음 Java 프로세스의 프로파일 링을 시도하여 속도 저하의 원인을 확인했습니다. 나는 Random.nextInt() : 787ms와 같은 간단한 메서드가 1000 밀리 초의 시간을 들여 하나의 호출을 끝내는 것을 발견했다. 대부분의 메서드는 오랜 시간이 걸려서는 안되며 내 서버에서 CPU 사용량이 매우 높습니다. CentOS에 문제가 있습니까? 또는 Java? 또는 내 VPS에 올바르게 구성하지 않은 것이 있습니까?

+2

사용되는 임의의 방법에 따라 기계에 많은 엔트로피가 남아 있지 않고 다음 번호를 생성하기 전에 더 많은 것을 기다리고 있습니다. –

+1

에 관계없이 임의의 int를 가져 오는 데는 거의 1 초가 걸리지 않아야합니다. 가상 환경에서는 가상 서버가 과도하게 초과 가입 된 하드웨어에있을 가능성이 있습니다.이 하드웨어는 vmstat와 같은 OS 수준 도구를 사용하면 표시되지 않습니다. 상자에 SSH를 넣으면 반응이 좋지 않거나 느린가요? –

+0

자바가 97 % 정도의 CPU를 사용하지 않는 것은 꽤 빠르다. 나는 이것을 – Zachar543

답변

0

당신이 즉, 프로그램 내에서 다음과 같이 처리 시간을 측정 할 때 당신이 당신의 타이밍을 재현 할 수 : 자바는 97 %를 참가하는 때가 무슨 뜻 이죠 또한

long start = System.currentTimeMillis(); 

/* Your code */ 

[...]  

long time = System.currentTimeMillis() - start; 

System.out.println("Measurement: " + time); 

는 "이 빠르다 CPU의 "? Java가 처음 97 %를 차지하는 이유는 무엇입니까? 여러 스레드가 실행 중입니까? 계산이 짧지 않거나 오래 실행됩니까?

+0

약간의 타이밍 조금. 자바가 97 %의 CPU를 사용하지 않을 때 "빠르다"는 말은이 방법들이 많은 시간을 소비 할 때 CPU의 대부분을 단순한 작업을 수행하는 것이라고 말하고있다. – Zachar543

3

소스 코드에 타이밍을 추가하는 대신 BTrace : http://kenai.com/projects/btrace과 같은 Java 에이전트를 사용하면 응용 프로그램 소스 코드를 엉망으로 만들지 않고도 원하는 정보를 얻을 수 있습니다.

BTrace는 EurekaJ 같은 시각화, (나는 BTtrace 출력을 시각화하기 위해 만든 프로젝트)와 결합 될 수있다 : http://eurekaj.haagen.name

기타 상업 프로파일 옵션은 JProfiler와 또는 YourKit로도 사용할 수 있습니다,하지만 그들은 할 가격표가 붙어 있습니다.

관련 문제