2013-03-15 4 views
4

우리는 외부 API를 호출하고 해당 API에서 응답을 다시받는 REST 기반 서비스를 제공합니다.CPU 및 IO 시간을 찾는 방법은 무엇입니까?

우리가 서비스를 호스팅 할 때 우리 상자가 트래픽을 처리 할 수 ​​있도록 여기에 용량 요청을 제출했습니다.

그래서 용량의 사람은 나에게 물었다 한 -

Any idea what is the estimated CPU and IO time for these calls?

사람이이 용어의 의미를 무엇 simple language에 말해 줄 수 있습니까? 통화에 대한 대략적인 견적을 얻기 위해 어떤 접근 방식을 취해야합니까?

도움 주셔서 감사합니다.

업데이트 : -이 내 프로그램입니다

한다고 가정합니다.

public class RestLnPTest { 

    private final static Logger LOG = Logger.getLogger(NokiaLnPTest.class.getName()); 
    private static int noOfThreads = 10; 

    public static void main(String[] args) { 

     ExecutorService service = Executors.newFixedThreadPool(noOfThreads); 

     try { 

      for (int i = 0; i < 100 * noOfThreads; i++) { 
       service.submit(new ThreadTask()); 
      } 

      service.shutdown(); 
      service.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); 

     } catch (InterruptedException e) { 

     } catch (Exception e) { 

     } finally { 
      logHistogramInfo(); 
     } 
    } 

    private static void logHistogramInfo() { 

    System.out.println(ThreadTask.lookupHistogram); 

    } 
} 

class ThreadTask implements Runnable { 

    public static ConcurrentHashMap<Long, AtomicLong> lookupHistogram = new ConcurrentHashMap<Long, AtomicLong>(); 
    private static final String URL = "SOME_URL"; 

    @Override 
    public void run() { 

     RestTemplate restTemplate = new RestTemplate(); 

     long start = System.nanoTime(); 

     String result = restTemplate.getForObject(URL, String.class); 

     long end = System.nanoTime() - start; 

     final AtomicLong before = lookupHistogram.putIfAbsent(end/1000000, new AtomicLong(1L)); 

     if (before != null) { 
      before.incrementAndGet(); 
     } 
    } 
} 

그러면 CPU 및 IO 시간을 어떻게 알 수 있습니까? 그리고 현재 저는 유닉스 환경에서 일하고 있습니다.

+0

JDK와 함께 제공되는 VisualVM을 열고 REST 호출을 프로파일 링하십시오. 또는 Java 용 프로파일 러인 훨씬 빠른 YourKit을 살펴보고 똑같은 작업을 수행 할 수도 있습니다. – pickypg

+0

제안에 감사드립니다. 'visualvm' 또는'yourkit'을 사용하면 입출력과 CPU 시간을 모두 알아낼 수 있습니까? 그렇다면 REST 호출을 프로파일 링 한 후에 어떻게 알 수 있습니까? 이러한 것을 발견하기 위해 내가 조사해야 할 구성 요소를 의미합니까? 도와 주셔서 감사합니다. – AKIWEB

+0

당신은 어떤 CPU 시간을 알지 못한다고 말하고 싶습니까? – Ingo

답변

2

귀하의 응용 프로그램 활동으로 인한 CPU 사용량 및 IO 부하를 측정해야한다고 생각합니다. 당신은 유닉스 계열 시스템에있는 경우

특정 프로세스를 모니터링하기 위해 적절한 옵션과 함께 전체 시스템

  • ps의 자동 monitosring에 대한 수동 모니터링
  • vmstat에 대한

    1. top 명령을 사용할 수 있습니다.

    Windows에서 작업 관리자를 사용하여 시작하십시오. WMI를 사용하여 동일한 데이터를 가져 오는 vbs 또는 jscript에 스크립트를 구현할 수도 있습니다.

    자바에서 구현 된 플랫폼 독립적 인 방법이 필요한 경우 JMX를 사용할 수 있습니다. 시스템 빈은 최소한 CPU 소비에 관한 제한된 정보를 제공합니다.

  • +0

    제안에 대해 Alex에게 감사드립니다. 간단한 언어로 여기서 IO로드가 의미하는 것과 CPU 소비를 설명 할 수 있습니까? 나는 약간의 맥락을 가지고 있지만 내가 아는 것이 옳은 것인지 확실히하고 싶었습니다. 도와 주셔서 감사합니다. Windows 환경에서 작업 할 것입니다. – AKIWEB

    +0

    샘플 프로그램으로 제 질문을 업데이트했습니다. – AKIWEB

    +0

    여기서 도와 주실 수 있나요? – AKIWEB