对mqtt代理进行基准测试的脚本

pymqttbench的Python项目详细描述


这是一个对mqtt代理的性能进行基准测试的工具。它的工作原理是 同时启动任意数量的发布者和订阅者。这些 工作线程同时发布和订阅同一主题并发送或接收 固定数量的消息。

安装

安装pymqttbench最简单的方法是使用pip:

pip install pymqttbench

或者,您也可以使用以下命令克隆回购协议:

git clone https://github.com/mtreinish/pymqttbench.git

然后使用pip安装:

pip install ./pymqttbench

或者您可以运行:

cd pymqttbench && python setup.py install

但是建议使用pip。

用法

安装pymqttbench之后,只需使用以下命令运行它:

pymqttbench --hostname $BROKER_HOST

命令。需要hostname参数来告诉pymqttbench主机名 经纪人的。这是唯一需要的字段,但还有其他几个字段 如何连接到代理的选项。--port用于指定 如果您没有连接到标准端口,1883--username 如果需要,使用--password指定用户身份验证。相似的 --cacert可用于指定一个可信的ca证书来验证tls 代理上的连接。还有--topic参数 用于指定要用于基准测试的主题,默认情况下pybench 使用。请注意,所有这些设置都用于发布服务器和 订户。

除了mqtt连接选项外,还有--brief标志,它是 用于打印以冒号分隔的基准测试结果列表,而不是默认值 可读格式化输出。此输出的格式为:

Subscriber Count:Publisher Count:Subscriber Mean Duration:Subscriber Duration Std. Deviation:Subscriber Avg. Throughput:Subscriber Total Throughput:Publisher Mean Duration:Publisher Duration Std. Deviation:Publisher Avg. Throughput:Publisher Total Throughput

调整基准

在pymqttbench知道如何连接到代理之后,您可以优化基准测试 为了你的特殊需要。有几个轴你可以调整贝克马克, 第一个是出版商和订阅者的数量。这是可配置的 使用--pub-clients--sub-clients标志。默认情况下,每个都设置为 到10。下一个可以调整的选项是 发布者将使用--pub-count和 订户将使用--sub-count监听。值得指出的是 订阅者不像其他人那样与单个工人配对 基准测试工具,但是听的主题与所有发布者相同 发布到。除了调整这些选项之外,您可能还希望 更改发布服务器超时--pub-timeout和订阅服务器超时, sub-timeout,它描述基准将等待工作进程多长时间 发布或接收指定的消息计数。

您还可以使用--msg-size设置消息负载的大小 获取要使用的字节数。默认情况下,它使用1024字节的有效负载。这个 最后一个优化选项是--qos,用于指定要使用的QoS级别 用于基准测试。默认情况下使用QoS 0。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓中通过TCP发送时java文件损坏   Java测试预期=异常失败,断言错误   java ssh4 LazyInitializationException   java是否可以在集合中添加重复项?   java是一个免费的开源数据库管理工具   java是否可以在导出的html中嵌入图像   编译器构造解释一些东西,并用Java运行生成的字节码?   java KeyPairGenerator未生成随机密钥   java使用正则表达式生成字符串而不是匹配字符串   java中的多线程线程间通信   具有复合密钥的java Hibernate合并问题   java不能在MainActivity类之外使用SharedReferences变量   正在获取切割/零件异常消息。使用java Spring ControllerAdvice   java tomcat漏洞讨论   javascript在Java中实现“system”命令   java如何在JUnit5*中加载*Spring测试上下文之前获取回调?   java bluej关于缺少返回语句   JavaSpringBoot@ModelAttribute包含使用字符串键的其他模型   从可选中抛出异常。ifPresent()Java 8