运行 一个 shell 脚本 100 times/sec
Run a shell script 100 times/sec
最终目标:使用 Mosquitto 作为代理在 MQTT 上发布 100 "heartbeat"messages/second。
发送一个心跳,我可以轻松做到mosquitto_pub -t "ems/heartbeat" -m 0
。
我知道 Unix 系统中的 watch
实用程序,但速度不够快,无法实现目标。我解决这个问题的第一个方法是使用命令 while sleep 0.01; do mosquitto_pub -t "ems/heartbeat" -m 0; done
来放大这个问题。通过订阅 "ems/heartbeat" 主题 (mosquitto_sub -t "ems/heartbeat"
),我 相当 确定发布到该主题的消息远少于 1 时间段内预期的 100 条第二。所以这是我的问题:我如何 运行 一个 shell 脚本 - 上面的心跳 - 每秒 100 次,甚至更好,我如何在某个 MQTT 主题上发布 100 messages/sec ?
与我的最终目标相比,标题似乎有点误导,但找到 运行 一个 shell 脚本 100 times/sec 的方法应该可以解决问题。如果有不同的方法来解决问题,当然欢迎!谢谢!
编辑和附加信息:
这些消息的接收者只是一个微控制器,它需要检查与电子监控系统(笔记本电脑)的连接是否有效。需要 100 messages/sec 是因为微控制器正在为高速执行器提供控制,并且当发生连接丢失时,一切都需要处于安全状态。
基本假设是 100 条消息分布在 1 秒的时间跨度内,并且来自单个实体,即 EMS。
通过 运行 时间命令,这是输出,所以不可能使用 mosquitto_pub 每秒发送 100 条消息,正如所指出的那样。
time mosquitto_pub -t "ems/heartbeat" -m 0
real 0m0.039s
user 0m0.006s
sys 0m0.011s
简短的回答是不要。
使用合适的负载生成工具,例如jmeter 支持 MQTT。
否则使用适当的 MQTT 客户端库并连接一次,然后循环发布。这样你就没有为每条消息设置和拆除与代理的新连接的开销(这就是驱动 mosquitto_pub 这种方式所做的事情)
最终目标:使用 Mosquitto 作为代理在 MQTT 上发布 100 "heartbeat"messages/second。
发送一个心跳,我可以轻松做到mosquitto_pub -t "ems/heartbeat" -m 0
。
我知道 Unix 系统中的 watch
实用程序,但速度不够快,无法实现目标。我解决这个问题的第一个方法是使用命令 while sleep 0.01; do mosquitto_pub -t "ems/heartbeat" -m 0; done
来放大这个问题。通过订阅 "ems/heartbeat" 主题 (mosquitto_sub -t "ems/heartbeat"
),我 相当 确定发布到该主题的消息远少于 1 时间段内预期的 100 条第二。所以这是我的问题:我如何 运行 一个 shell 脚本 - 上面的心跳 - 每秒 100 次,甚至更好,我如何在某个 MQTT 主题上发布 100 messages/sec ?
与我的最终目标相比,标题似乎有点误导,但找到 运行 一个 shell 脚本 100 times/sec 的方法应该可以解决问题。如果有不同的方法来解决问题,当然欢迎!谢谢!
编辑和附加信息: 这些消息的接收者只是一个微控制器,它需要检查与电子监控系统(笔记本电脑)的连接是否有效。需要 100 messages/sec 是因为微控制器正在为高速执行器提供控制,并且当发生连接丢失时,一切都需要处于安全状态。
基本假设是 100 条消息分布在 1 秒的时间跨度内,并且来自单个实体,即 EMS。
通过 运行 时间命令,这是输出,所以不可能使用 mosquitto_pub 每秒发送 100 条消息,正如所指出的那样。
time mosquitto_pub -t "ems/heartbeat" -m 0
real 0m0.039s
user 0m0.006s
sys 0m0.011s
简短的回答是不要。
使用合适的负载生成工具,例如jmeter 支持 MQTT。
否则使用适当的 MQTT 客户端库并连接一次,然后循环发布。这样你就没有为每条消息设置和拆除与代理的新连接的开销(这就是驱动 mosquitto_pub 这种方式所做的事情)