私はnode.jsでREST APIを構築する必要があり、おそらく不要な機能を回避し、REST APIを構築するためのカスタム構築フレームワークのように機能する、express.jsよりも軽量のフレームワークを探していました。同じケースでは、イントロからのRestifyをお勧めします。
読み込み使用はrestifyと表現しないのはなぜ?restifyは良い選択のようです。
しかし、私が両方を負荷で試したとき、驚きは来ました。
RestifyでサンプルREST APIを作成し、毎秒1000リクエストでフラッディングしました。驚いたことに、しばらくするとルートが応答しなくなりました。express.jsで構築された同じアプリがすべてを処理しました。
私は現在、APIに負荷をかけています
var FnPush = setInterval(function() {
for(i=0;i<1000;i++)
SendMsg(makeMsg(i));
}, 1000);
function SendMsg(msg) {
var post_data = querystring.stringify(msg);
var post_options = {
host: target.host,
port: target.port,
path: target.path,
agent: false,
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': post_data.length,
"connection": "close"
}
};
var post_req = http.request(post_options, function(res) {});
post_req.write(post_data);
post_req.on('error', function(e) {
});
post_req.end();
}
私が得た結果は理にかなっていると思いますか?そして、もしそうなら、このシナリオでは再表現よりもエクスプレスの方が効率的ですか?または、それらをテストした方法にエラーがありますか?
コメントに応じて更新
再調整の動作
1000 req.sを超える負荷が供給された場合、1015 req.sまで受信してから何もせずに、わずか1秒で処理を停止しました。すなわち。着信要求をカウントするために実装したカウンターは、1015以降に停止しました。
100 reqsの負荷で供給された場合。1秒あたり1015まで受信し、その後応答しなくなりました。