2013-07-16 14 views
6

いくつかの残りのAPIベースのnodejを開発しました。私はAPIのパフォーマンスをテストしたいと思います。どんなツールでも簡単に各APIコールの時間をカウントできますか?REST APIは、サーバー側の応答時間(パフォーマンス)を測定します。

REST APIが要求に応答するために必要な時間の測定を実装する方法。

+0

あなたは、コード・カバレッジ・ツールをお探しですか?それはあなたが望むもののほとんどを与えるはずです。しかし、私の頭の上から1つを知らない。 – tjameson

+2

あなた自身のツールを書いてみませんか?それはかなり簡単です – Rikky

+0

私はnodejsに基づいてWebサービスを作成し、いくつかの残りのAPIを公開し、一部のクライアントはこれらのapisを消費しています。私は各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()を呼び出す必要がありますか?これはパーフォマンスに影響を及ぼしますか?私はコードにあまり変更を加えたくないので、パフォーマンスに影響します。 – ldlchina

+0

送信メソッドをオーバーライドして呼び出すことができます。また、送信ごとに手動で呼び出すこともできます。複雑な状況では実際にはリクエストが時間を計測するようなものではなく、実際には1回の関数呼び出しを過度に複雑にしています。 – moka

+0

私は上記の答えを修正しました。 APIを変更する必要があります。 – moka

0

Apache JMeterのようなパフォーマンス測定ツールはどうですか?これを簡単に使用してサーバー上の(重い)負荷をシミュレートし、応答時間やその他のパフォーマンス指標を測定することができます。これは、複数の図形表現を提供します。

このBlog Postは、Web-APIのHTTPベースのパフォーマンステストを設定する方法を示しています。 RESTful Webサービスをテストするには、このようにします。

0

ノードにconsole.time('timerName');console.timeEnd('timerName')の機能を簡単に使用してください。 'timerName'は明らかに設定可能です。

例:

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

出力:

getCustomers: 58ms

関連する問題