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.
Jawaban:
Corrigendum : informasi ini sekarang salah, teruslah bergulir!
Ini tahun 2015 dan saya pikir situasinya telah banyak berubah sejak saat itu. Raygun.io telah memposting tolok ukur terbaru yang membandingkan hapi, express, dan restify .
Ia mengatakan:
Sepertinya Restify adalah pemenang di sini untuk penerapan layanan yang lebih mudah. Apalagi jika Anda sedang membangun layanan yang menerima banyak permintaan dari klien yang sama dan ingin bergerak cepat. Anda tentu saja mendapatkan lebih banyak keuntungan daripada Node telanjang karena Anda memiliki fitur seperti dukungan DTrace.
sumber
Ini adalah 2017 dan tes kinerja terbaru oleh Raygun.io membandingkan hapi, express, restify dan Koa.
Ini menunjukkan bahwa Koa lebih cepat daripada framework lain, tetapi karena pertanyaan ini tentang express dan restify, Express lebih cepat daripada restify.
Dan itu tertulis di pos
sumber
Menurut deskripsi Node Knockout :
Masalah kinerja dan bug mungkin bisa diperbaiki. Mungkin uraian itu akan menjadi motivasi yang memadai.
sumber
Saya mengalami masalah serupa saat membandingkan beberapa kerangka kerja di OS X melalui ab. Beberapa tumpukan mati, secara konsisten, setelah sekitar permintaan ke-1000.
Saya melewati batas secara signifikan, dan masalahnya hilang.
Anda dapat memeriksa maxfiles Anda dengan ulimit , (atau launchctl limit <OS X only) dan melihat berapa maksimumnya.
Semoga membantu.
sumber
saya bingung dengan express or restify or perfectAPI. bahkan mencoba mengembangkan modul di semuanya. syarat utamanya adalah membuat RESTapi. Tapi akhirnya berakhir dengan express, menguji diri saya dengan request per second yang dibuat pada semua framework, express memberikan hasil yang lebih baik dari yang lain. Meskipun dalam beberapa kasus menegaskan kembali outshines express tetapi mengungkapkan jahitan untuk memenangkan perlombaan. Saya jempol untuk mengungkapkan. Dan ya saya juga menemukan lokomotif js, beberapa kerangka MVC dibangun di atas ekspres. Jika ada yang mencari aplikasi MVC lengkap menggunakan express dan jade, carilah lokomotif.
sumber