2013-07-16 4 views
6

일부 나머지 API를 기반으로 nodejs를 개발했습니다. API의 성능을 테스트하고 싶습니다. 어떤 도구가 각 API 호출 시간을 쉽게 계산할 수 있습니까?REST API는 서버 측 응답 시간 (성능)을 측정합니다.

또는 REST API가 요청에 응답하는 데 필요한 시간 측정을 구현하는 방법.

+0

당신이 코드 커버리지 도구를 찾고 계십니까? 그것은 당신이 원하는 것을 최대한 제공해야합니다. 그래도 내 머리 꼭대기에있는 사람을 몰라. – tjameson

+2

당신은 왜 당신 자신의 도구를 쓰지 않습니까? 그것은 매우 간단합니다. – Rikky

+0

nodejs를 기반으로 웹 서비스를 만들었고 일부 나머지 API를 노출했으며 일부 클라이언트는 이러한 api를 사용하고 있습니다. 각 API 호출 시간에 대한 정보를 얻고 싶습니다. 그런 도구가 있습니까? – ldlchina

답변

3

다음은 express.js를 사용하여 정확한 시간 측정을 사용하여 이벤트를 주입하는 방법의 예입니다.

은 경로 전에 추가 :

app.all('*', function(req, res, next) { 
    var start = process.hrtime(); 

    // event triggers when express is done sending response 
    res.on('finish', function() { 
    var hrtime = process.hrtime(start); 
    var elapsed = parseFloat(hrtime[0] + (hrtime[1]/1000000).toFixed(3), 10); 
    console.log(elapsed + 'ms'); 
    }); 

    next(); 
}); 

은 각 요청의 시작 시간을 절약 할 수 및 응답을 클라이언트로 전송 된 후 finish을 트리거합니다.
'완료'이벤트를 가리키는 user419127 주셔서 감사합니다.

+0

각 API에서 req.timer.complete()를 호출해야합니까? 이것은 영향을 미치는가 perponemance? 나는 코드에 너무 많은 변경을가하거나 성능에 영향을 미치고 싶지 않다. – ldlchina

+0

보내기 메서드를 재정의하여 전화를 걸거나 각 보내기 후에 수동으로 직접 호출 할 수 있습니다. 성능의 복잡성이 커지기 때문에 요청 시간을 측정하는 것만으로는 충분하지 않습니다. – moka

+0

위의 대답을 수정했습니다. 이제는 res.send에 대한 주입이 포함되어 있습니다. API 수정이 필요합니다. – moka

0

Apache JMeter과 같은 성능 측정 도구는 어떻습니까? 이를 사용하여 서버의 (과중한)로드를 시뮬레이션 한 다음 응답 시간 및 기타 성능 표시기를 측정 할 수 있습니다. 이를 위해 여러 가지 그래픽 표현을 제공합니다.

Blog Post은 웹 API에 대해 HTTP 기반 성능 테스트를 설정하는 방법을 보여줍니다. 내 RESTful 웹 서비스를 테스트하려면이 방법을 사용합니다.

0

노드에 console.time('timerName');console.timeEnd('timerName') 기능을 간단하게 사용하십시오. 'timerName'은 분명히 구성 가능합니다.

예 :

console.time('getCustomers'); console.timeEnd('getCustomers')

출력 :

getCustomers: 58ms