Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

emqtt-bench压测时如何打印客户端的报文信息 #251

Open
nuomi666 opened this issue Jul 16, 2024 · 4 comments
Open

emqtt-bench压测时如何打印客户端的报文信息 #251

nuomi666 opened this issue Jul 16, 2024 · 4 comments

Comments

@nuomi666
Copy link

emqtt-bench发送qos2消息压测mqtt时,接收客户端报unexpected_PUBREL错误,mqtt服务器没有任何报错日志,想通过查看emqtt-bench客户端的报文日志来分析错误原因

@zmstone
Copy link
Member

zmstone commented Jul 17, 2024

emqtt-bench 的客户端有一个默认重试的行为,如果一个消息发出去之后30秒还没有完成投递,客户端会尝试重传。
重传发生后,如果 EMQX 实际上已经回复了 PUBREL,再回复第二次的时候客户端就不认识,然后就出这个日志。

严格来说,会话内重传消息是违反协议的,所以在 EMQX 5.8 会把这个行为改掉。
emqtt-bench 的默认参数还没有改过来。可以尝试 --retry-interval 0 来关闭重传。

@zmstone
Copy link
Member

zmstone commented Jul 17, 2024

#252

@nuomi666
Copy link
Author

emqtt-bench 的客户端有一个默认重试的行为,如果一个消息发出去之后30秒还没有完成投递,客户端会尝试重传。 重传发生后,如果 EMQX 实际上已经回复了 PUBREL,再回复第二次的时候客户端就不认识,然后就出这个日志。

严格来说,会话内重传消息是违反协议的,所以在 EMQX 5.8 会把这个行为改掉。 emqtt-bench 的默认参数还没有改过来。可以尝试 --retry-interval 0 来关闭重传。

目前 --retry-interval 参数是默认的0,依然会报 unexpected_PUBREL的警告,这个警告的出现原因会有哪些,emqtt-bench给与的日志太少了,分析不出来

@zmstone
Copy link
Member

zmstone commented Jul 18, 2024

Sorry, 这个 PUBREL 是 EMQX 发给客户端的,表明是 EMQX 发生了重试,不是修改客户端参数,而是修改 EMQX 配置。

可以给 emqx.conf 配置 mqtt.retry_interval = infinity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants