2009-11-23 2 views
1

현재 서버로드는 어떻게 결정합니까? CPU 시간을 얻으려면 여기서 JMX를 사용해야합니까, 아니면 비슷한 것을 결정할 다른 방법이 있습니까?Java - 현재로드를 결정하는 방법

기본적으로 서버가 유휴 상태 일 때만 백그라운드 작업을 실행하고 싶습니다. 나는 석영을 사용하여 매 30 분마다 작업을 시작하고, 서버로드를 확인한 후, 낮 으면 진행하거나 사용 중이면 멈 춥니 다.

부하 (CPU 사용 시간, 메모리 사용량)를 측정하는 방법을 결정할 수있게되면 다양한 지점에서이를 측정하여 서버 구성 방법을 결정할 수 있습니다.

월터

답변

1

까다로운 것은 휴대용 방식으로 수행하는 경우 플랫폼에 따라 크게 달라질 수 있습니다.

Quartz 작업이 우선 순위가 낮은 스레드에서 실행되도록 구성하는 방법도 있습니다. Quartz를 사용하면 configure the thread factory을 사용할 수 있으며 서버가 사용량이 많은 경우 쓰레드는 도중에 들어 가지 않고 실행할 수있을 때까지 팩의 뒤쪽으로 셔플해야합니다.

또한 작업 중간에 부하가 급증하면 부하가 다시 떨어질 때까지 VM이 자동으로 배치 작업을 차단합니다. 그것은 현재의 부하의 수동 내성 검사로 얻지 못할 자제력이 있어야합니다.

+0

감사합니다. 나는 이것을 줄 것이다. 나는 서버로드가 무엇인지 신경 쓰지 않고, 이것이 가장 낮은 우선 순위를 얻고 결국 실행될 것입니다. –

0

나는 당신이 당신의 질문에 대답했다고 생각합니다. 순수 Java 솔루션을 원할 경우 ThreadMXBean에서 반환 한 정보 만 수행하면됩니다.

얼마나 많은 스레드가 있는지, 호스트 시스템의 프로세서 수 및 각 스레드에서 사용 된 시간을 알 수 있으며 그로부터 CPU로드를 계산할 수 있습니다.

+0

의견을 보내 주셔서 감사합니다. Quartz 작업을 사용하고 있으므로 우선 순위가 낮은 스레드를 사용하여 작동하는 방식을 시도합니다. 로드가 무엇인지 알 필요가 없습니다. 목록에서 가장 우선 순위가 낮기를 바랍니다. –