Tôi có yêu cầu xây dựng API REST trong node.js và đang tìm kiếm một khung công tác nhẹ hơn express.js, có thể tránh các tính năng không mong muốn và sẽ hoạt động giống như một khung được xây dựng tùy chỉnh để xây dựng các API REST. Điều chỉnh từ phần giới thiệu của nó được khuyến nghị cho trường hợp tương tự.
Đọc Tại sao sử dụng restify và không express? có vẻ như thay đổi là một lựa chọn tốt.
Nhưng điều ngạc nhiên đã đến khi tôi thử cả hai với một tải.
Tôi đã tạo một API REST mẫu trên Restify và làm ngập nó với 1000 yêu cầu mỗi giây. Tôi ngạc nhiên là tuyến đường bắt đầu không phản hồi sau một thời gian. Cùng một ứng dụng được xây dựng trên express.js đã xử lý tất cả.
Tôi hiện đang áp dụng tải cho API qua
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();
}
Kết quả tôi nhận được có vẻ hợp lý không? Và nếu như vậy thể hiện có hiệu quả hơn thay đổi trong kịch bản này? Hoặc có bất kỳ lỗi nào trong cách tôi kiểm tra chúng không?
cập nhật để trả lời các bình luận
hành vi điều chỉnh
khi được cung cấp với tải hơn 1000 req.s, nó ngừng xử lý chỉ trong 1 giây nhận cho đến 1015 req.s và sau đó không làm gì cả. I E. bộ đếm mà tôi đã triển khai để đếm các yêu cầu đến đã ngừng tăng sau 10 giờ 15.
khi được cung cấp với tải thậm chí 100 reqs. mỗi giây nó nhận được cho đến 10h15 và không phản hồi sau đó.