Saya memiliki persyaratan untuk membangun REST API di node.js dan mencari kerangka kerja yang lebih ringan daripada express.js yang mungkin menghindari fitur yang tidak diinginkan dan akan bertindak seperti kerangka kerja yang dibuat khusus untuk membangun REST API. Restify dari intronya direkomendasikan untuk kasus yang sama.
Membaca Mengapa menggunakan restify dan bukan express? sepertinya restify adalah pilihan yang baik.
Tapi kejutan datang saat saya menjajal keduanya dengan beban.
Saya membuat sampel REST API di Restify dan membanjirinya dengan 1000 permintaan per detik. Saya terkejut karena rute tersebut mulai tidak merespons setelah beberapa saat. Aplikasi yang sama yang dibangun di express.js menangani semuanya.
Saat ini saya menerapkan beban ke API melalui
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();
}
Apakah hasil yang saya peroleh tampak masuk akal? Dan jika demikian, apakah ekspres lebih efisien daripada restify dalam skenario ini? Atau apakah ada kesalahan dalam cara saya mengujinya?
diperbarui sebagai tanggapan atas komentar
perilaku restify
ketika diumpankan dengan beban lebih dari 1000 kebutuhan itu berhenti memproses hanya dalam 1 detik menerima sampai 1015 kebutuhan dan kemudian tidak melakukan apapun. yaitu. penghitung yang saya terapkan untuk menghitung permintaan masuk berhenti naik setelah 1015.
bila diberi makan dengan beban bahkan 100 reqs. per detik diterima hingga 1015 dan tidak responsif setelah itu.