มีคำถามเกี่ยวกับการทดสอบ performance ของ MQTT messaging
ซึ่งส่วนใหญ่จะใช้ทำงานร่วมกับพวกอุปกรณ์ IoT ต่าง ๆ 
ว่าต้องทำอย่างไรได้บ้าง ?

ก่อนอื่นต้องเข้าใจก่อนว่า MQTT protocol คืออะไร ?

MQTT ย่อมาจาก Message Queue Telemetry Transport
มันเกิดมาสำหรับโลกของ IoT
มีขนาดของ message ที่เล็ก ตัวมันเองก็เช่นกัน
แน่นอนว่า เป็น open protocol
ความสามารถหลัก ๆ ประกอบไปด้วย

  • เป็น Application level protocol ซึ่งทำงานบน TCP/IP ด้วย port 1883 (default port) หรือ SSL ใช้ port 8883
  • เป็น Asynchronous protocol 
  • มีรูปแบบการทำงานแบบ publisher/subscriber
  • ขนาดของ message มีขนาดเล็ก ซึ่งประกอบไปด้วย 3 ส่วนคือ fixed header, ข้อมูล header และ body
  • สามารถทำงานได้บน network ที่ไม่เสถียร

คำตอบคือ ทำได้หลายวิธี หนึ่งในนั้นคือ การทดสอบด้วย JMeter

แต่ต้องติดตั้ง plugin เพิ่มเติมชื่อว่า MQTT JMeter Plugin
โดยทำการ copy ไฟล์ mqtt-xmeter-1.0.1-jar-with-dependencies.jar
ไปไว้ที่ %JMETER_HOME%/lib/ext
จากนั้นทำการ start JMeter ขึ้นมา

MQTT จะอยู่ใน Sampler ของ JMeter 

ประกอบไปด้วย

  • MQTT connect สำหรับการเชื่อมต่อไปยัง MQTT server
  • MQTT Pub/Sub Sampler สำหรับการ subscribe และ publish ไปยัง topic ใน MQTT server

แสดงดังรูป

การใช้งานนั้น ก็ตามที่เราต้องการเลยว่า จะทดสอบอะไร

ถ้าเป็นเรื่องของ connection ก็ใช้งาน MQTT Connect ได้เลย
โดยสามารถกำหนดค่า parameter ต่าง ๆ ได้ 
เพื่อดูผลการทำงานว่า มี idle client เท่าไร มี waiting เท่าไร

หรือจะทดสอบการ publish ข้อมูลไปยัง topic ก็ได้

จากนั้นดูผลการทำงานด้วยการเพิ่ม Listerner เช่น view Result Tree มาดูก็ได้ดังนี้


น่าจะเป็นอีกแนวทางหนึ่งในการทดสอบ
ขอให้สนุกกับการทดสอบ performance  ครับ