Tôi muốn benchmark máy chủ socket.io của mình. Tôi muốn kiểm tra xem có bao nhiêu kết nối và thông điệp song song mà máy chủ có thể xử lý.Benchmarkt socket.io
Nhưng máy chủ socket.io của tôi bị lỗi sau một vài phút khi tôi bắt đầu điểm chuẩn với khoảng 200 ổ cắm web.
Tôi đã cố gắng sử dụng mô đun cụm của node.js để chia sẻ quy trình với các lõi. Khi tôi sử dụng mô-đun cụm, một số kết nối bị ngắt kết nối sau một thời gian.
Các máy chủ mà tôi sử dụng cho kỳ thi này là một máy chủ ảo trên mây amazon với thuộc tính này:
- 7 GB bộ nhớ
- 20 EC2 Tính toán đơn vị (8 lõi ảo với 2,5 đơn vị EC2 Tính mỗi)
- 1690 GB dung lượng lưu trữ dụ
- 64-bit nền tảng
- I/O hiệu suất: High tên
- API: c1.xlarge
Đây là mã của benchmark-client:
var fs = require('fs');
var io = require("socket.io-client");
var host = "http://localhost:3000";
var timeLog = fs.createWriteStream(__dirname+'/public/time.log',{flags:'a',mode:0666, encoding:'encoding'});
var count = 200;
var sockets = [];
var total = 0;
var countTime = 0;
var echo = exports;
echo.start = function() {
fs.writeFile('public/time.log',"",function(err){
if(err) throw err;
});
for(var i=0;i<count;i++){
var socket = io.connect(host,{"force new connection":true});
sockets.push(socket);
//console.log(i);
socket.on("message",function(message){
countTime++;
time = new Date().getTime()-message;
total+=time;
timeLog.write(time+"\n");
socket.send(new Date().getTime());
});
socket.on("disconnect",function(){
console.log("disconnect");
});
}
parallelSockets();
var j = 0;
}
function parallelSockets(){
for(var i = 0 ;i<count;i++){
sockets[i].send(new Date().getTime());
}
}
Và đây mã của socket.io-server:
socket.on('message',function(message){
start = new Date().getTime();
socket.send(message);
end = new Date().getTime() - start;
logfile.write(end+"\n");
});
Có cơ chế bảo mật trên ổ cắm. io chặn rất nhiều tin nhắn song song và các kết nối tạo thành một khách hàng?
Ai đó có thể giúp tôi không?
lỗi gì Node.js in trên sụp đổ? –
node.js chỉ in trên sự cố chữ "Bị giết". – CodeChiller
Nó có thể đơn giản là vì bạn đang hết các bộ mô tả tập tin. Hãy thử chạy 'ulimit -n' là cùng một người dùng đang chạy node.js (nếu bạn đang sử dụng Linux, ít nhất). Bạn có thể thay đổi giá trị này bằng cách sử dụng 'ulimit' hoặc, vĩnh viễn hơn, trong tệp cấu hình như là'/etc/security/limits. {Conf, d} '. –