ฉันมีความต้องการที่จะสร้าง REST API ใน node.js และกำลังมองหาเฟรมเวิร์กที่มีน้ำหนักเบามากกว่า express.js ซึ่งอาจหลีกเลี่ยงคุณสมบัติที่ไม่ต้องการและจะทำหน้าที่เหมือนเฟรมเวิร์กที่สร้างขึ้นเองสำหรับการสร้าง REST API ขอแนะนำให้ Restify จาก Intro สำหรับกรณีเดียวกัน
อ่านทำไมต้องใช้ restify และไม่แสดงออก? ดูเหมือนว่า restify เป็นทางเลือกที่ดี
แต่ความประหลาดใจเกิดขึ้นเมื่อฉันลองใช้ทั้งสองอย่างด้วยการโหลด
ฉันสร้าง REST API ตัวอย่างใน Restify และมีคำขอ 1,000 คำขอต่อวินาที ทำให้ฉันประหลาดใจที่เส้นทางเริ่มไม่ตอบสนองหลังจากนั้นสักครู่ แอพเดียวกันที่สร้างขึ้นบน 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();
}
ผลลัพธ์ที่ได้ดูสมเหตุสมผลหรือไม่? และถ้าเป็นเช่นนั้นการแสดงออกจะมีประสิทธิภาพมากกว่าการปรับสภาพในสถานการณ์นี้ หรือมีข้อผิดพลาดในการทดสอบหรือไม่
ปรับปรุงตามความคิดเห็น
พฤติกรรมของการพักผ่อน
เมื่อป้อนด้วยโหลดมากกว่า 1,000 req.s จะหยุดประมวลผลในเวลาเพียง 1 วินาทีรับจนถึง 1,015 req.s จากนั้นไม่ทำอะไรเลย กล่าวคือ. ตัวนับที่ฉันใช้สำหรับการนับคำขอที่เข้ามานั้นหยุดการเพิ่มขึ้นหลังจาก 1015
เมื่อเลี้ยงด้วยโหลด 100 reqs ต่อวินาทีได้รับจนถึง 1,015 และไม่ตอบสนองหลังจากนั้น