Hi there, I’m using Artemis 2.6.3 as an MQTT broker embedded in a Spring 5 application with persistence enabled. I have not configured a limit for the number of connections or anything.
One of our customers reported an issue when they subscribe to MQTT topics. To find the root cause, I create a a large number of clients in Java using Eclipse Paho, each with its own client ID. The clients connect with cleanSession=false to the broker and then subscribe to some topics. I found out that after about 140 client connections (actual number differs from test run to test run), new clients receive "java.io.IOException: Connection is lost.“ with reason 32109. After a few seconds, a few new clients can connect (around 10). When I terminate all connected clients without unsubscribing from the topics (basically I’m simulating a crash of the clients here), again only a few new clients (with client IDs not used so far) can connect before receiving the IOException. Reconnecting the 140 clients with their original client ID is no problem. Looking into the logs, I see the following message for each client and each topic the client subscribed to: 2020-06-17 12:39:15,446 [Thread-27 (ActiveMQ-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$5@6ef80f24)] DEBUG o.a.a.a.core.server.impl.QueueImpl - Scanning for expires on client-96.base-topic.*.topic The "Scanning for expires“ is triggered every 30 seconds, so I see hundreds of these messages in the log every 30 seconds. These messages keep coming for hours (maybe forever), even for the „creashed“ clients. This seems to me that our customers will sooner or later run into problems when they have a large number of clients that crash from time to time. In particular, if they do not reuse the client IDs. From reading the documentation (https://activemq.apache.org/components/artemis/documentation/1.0.0/resource-limits.html), I would expect that the number of connections is not limited. So I have two issues where I would appreciate any help: 1. Why is the number of connections limited in my scenario? 2. How can my broker get rid of the „dead" bindings of the „crashed“ clients? Thanks a lot Tobias
