Tôi có một máy chủ NodeJS (Express) và tôi đang lan truyền các yêu cầu tới nhiều bộ xử lý bằng cách sử dụng ví dụ mô-đun cụm trên trang nodeJs.Làm thế nào để tăng thông lượng trên một máy chủ NodeJS bằng cụm sao?
if (cluster.isMaster) {
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
};
cluster.on('exit', function(worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died');
cluster.fork();
});
} else {
server.listen(app.get('port'), function(){
console.log('HTTP server on port ' + app.get('port') + ' - running as ' + app.settings.env);
});
// setup socket.io communication
io.sockets.on('connection', require('./app/sockets'));
io.sockets.on('connection', require('./app/downloadSockets'));
}
Vấn đề là điểm chuẩn bị vây hãm cho tôi thấy rằng không có sự gia tăng về số lần truy cập. Đây là sản phẩm của cuộc vây hãm:
$ siege -c100 192.168.111.1:42424 -t10S
** SIEGE 3.0.5
** Preparing 100 concurrent users for battle.
The server is now under siege...
Lifting the server siege... done.
Transactions: 1892 hits
Availability: 100.00 %
Elapsed time: 10.01 secs
Data transferred: 9.36 MB
Response time: 0.01 secs
Transaction rate: 189.01 trans/sec
Throughput: 0.93 MB/sec
Concurrency: 1.58
Successful transactions: 1892
Failed transactions: 0
Longest transaction: 0.05
Shortest transaction: 0.00
Sau Clustering:
$ siege -c100 192.168.111.1:42424 -t10S
** SIEGE 3.0.5
** Preparing 100 concurrent users for battle.
The server is now under siege...
Lifting the server siege... done.
Transactions: 1884 hits
Availability: 100.00 %
Elapsed time: 9.52 secs
Data transferred: 9.32 MB
Response time: 0.01 secs
Transaction rate: 197.90 trans/sec
Throughput: 0.98 MB/sec
Concurrency: 1.72
Successful transactions: 1884
Failed transactions: 0
Longest transaction: 0.07
Shortest transaction: 0.00
Điều đó có nghĩa máy chủ của tôi đã nhận được thông tối đa với máy chủ duy nhất có lẽ vì nó là một máy tính cục bộ hoặc có thể nó không thể có được 4 bộ vi xử lý vì có quá nhiều quy trình đang chạy, tôi không chắc chắn.
Tôi làm cách nào để sử dụng mô-đun cụm để tăng hiệu suất và tại sao mã hiện tại của tôi không được tăng cường? Ngoài ra tôi đã kiểm tra rằng nó thực sự tạo ra 4 trường hợp của máy chủ, tức là cluster.fork hoạt động. Mọi mẹo sẽ rất hữu ích.
bạn bị giới hạn bởi phần cứng của mình. – Mox
@Mox Thats những gì tôi nghĩ quá, nhưng kể từ khi tôi chỉ sử dụng một bộ xử lý trong một trường hợp và tất cả những người khác trong trường hợp thứ 2 tôi sẽ giả định rằng tôi đang sử dụng phần cứng của tôi trong trường hợp đầu tiên, do đó tôi sẽ nhận được thông lượng tốt hơn trừ khi nút cổ chai là ở nơi khác. Không chắc chắn cách tìm nút cổ chai đó –
Bạn có nhiều hơn một CPU trong hệ thống của mình không? Clustering hoạt động khi bắt đầu một quá trình mới cho mỗi CPU được tìm thấy, nếu bạn chỉ có một clustering là vô ích. –