2015-05-23 15 views
5

Tôi đã định cấu hình thành công cụm RabbitMQ hỗ trợ MQTT thông qua plugin MQTT. Hiện tại, các thông điệp MQTT vượt qua một trao đổi chủ đề có liên kết với một hàng đợi công việc. Vì vậy, tất cả các tin nhắn MQTT được lưu trữ trong hàng đợi công việc này.Thử nghiệm hiệu suất RabbitMQ/MQTT

Bây giờ tôi muốn kiểm tra hiệu suất Nhập của cụm này bằng cách nghiên cứu biểu đồ trong plugin quản lý RabbitMQ. Kế hoạch của tôi là thiết lập 2 nhà xuất bản NodeJS MQTT kích hoạt nhiều thông điệp MQTT trong vòng lặp for nhưng điều này không thành công.

Khi vòng lặp for chạy hơn 3000 lần, không phải tất cả các thông điệp sống sót ... (Tìm mã kiểm tra của tôi dưới đây) Tôi muốn có ý kiến ​​của bạn về vấn đề này:

  1. gì có thể là thông điệp lý do không tồn tại?
  2. Cách tốt nhất để đánh giá hiệu suất của RabbitMQ/MQTT là gì?
  3. Tôi có nên sử dụng nhiều nhà xuất bản không? ổ cắm [mã của bạn] => [bộ nhớ đệm của khách hàng] => [gửi hệ thống:

Code:

var quantity = 3000; 
var mqtt = require('mqtt'); 
var options = { 
    host: 'localhost', 
    port: 1883, 
    protocolId: 'MQIsdp', 
    rejectUnauthorized: false, 
    protocolId: 'MQIsdp', 
    protocolVersion: 3 
}; 

var client = mqtt.connect(options); 

for(var x=0; x<quantity; x++) 
{ 
    client.publish('/WSN/N536,563E/dynamic',"22"); 
    console.log(x); 
} 

client.end(); 
+0

Bạn có thể thử sử dụng QoS 1 hoặc 2 không? –

+0

Để tải kiểm tra môi giới MQTT của bạn, bạn có thể sử dụng một số công cụ thích https://github.com/emqtt/emqtt_benchmark/ (cần cài đặt Erlang). Hoặc bạn có thể làm điều tương tự như https://github.com/mqttjs/mqtt-stack/blob/master/benchmark/send.js –

+0

Câu hỏi của bạn không rõ ràng. Chính xác thì "không tồn tại" có nghĩa là gì? Người đăng ký của bạn không nhìn thấy tất cả chúng? Google "MQTT QOS". Kiểm tra hiệu năng rất phức tạp. Đây là tất cả công ty chúng tôi làm trong 20 năm. Để bắt đầu, bạn cần phải tự hỏi chính xác những gì bạn đang thử nghiệm. Câu hỏi tiếp theo là "nút cổ chai ở đâu?". Điều cuối cùng bạn muốn là giàn khoan thử nghiệm của bạn là nút cổ chai. Để có gợi ý về các vấn đề này, hãy xem các trang sau: http://gambitcomm.blogspot.com/2017/09/how-to-right-size-your-iot-platform.html và http://gambitcomm.blogspot.com/ 2016/10/mqtt-performance-methodology-using.html –

Trả lời

0

nhắn đang được đóng gói vào ổ cắm dòng và byte dữ liệu thực tế là ở đâu đó trên đường bộ đệm] => [bộ đệm ổ cắm hệ thống recv] => [mã của máy chủ].

Nếu bạn đang sử dụng localhost, cơ hội cho bộ đệm ổ cắm cho thông điệp 3K là tối thiểu, nhưng tồn tại.

Tôi không quen thuộc với máy khách mqqt nodeJS, nhưng nếu đang thực hiện client.end() với thao tác tắt socket, có thể một số khung mqtt không thể truy cập máy chủ của bạn.

Bạn có một số tùy chọn cho việc thử nghiệm của bạn như:

  • ngủ một chút trước khi client.end(), chỉ là một chút;
  • sử dụng QoS = 1 thư, bạn vẫn có cơ hội để mất một số byte chưa được xếp, tùy thuộc vào cấu hình kích thước của cửa sổ mqtt;
  • sử dụng smth phù hợp hơn, bạn có thể google cho "máy phát tải mqtt" cho mẫu
Các vấn đề liên quan