A messenger-based sending client grows from little memory to over 3 GB, and slows down by at least 10x, when transmitting 1 message each to many addresses.
here is the setup:
1. a single messenger-based sender.
2. a single dispatch router
3. 5000 messenger-based receivers, each listening to 10 unique addresses. i.e. 50,000 unique addresses total.
4. the sender sends a single to each unique address.
5. the first 10 messages go to addr1 ... addr10 – all of which belong to the first receiver.
6. when each receiver gets all 10 of its messages, it shuts down.
7. each message is 1-to-1, and fire-and-forget.
8. This means that the sender only sends 1 message to each address and then moves on, never to return.
The sending application started out doing something like 100-200 messages per second. Its memory footprint was small.
By the time I reach 13,000 messages sent, output has fallen to about 25 messages per second, and memory (RSS) has risen to about 1.7 GB.
It keeps getting larger and slower until the user rebels.