Sending one message to thousands of jabberIDs - jabber ends up sending it to only a random part of selected group of JIDs

Maciej Młynarczyk
Added over 4 years ago

We've got one 'superuser' account that we use to send messages to selected JIDs. Lets say we've selected ones we want to send a message to, and we got ourselves a huge array of user JIDs (20k at this point). We've got a deamon running in the background sending one message at a time to each user, stopping for a minute after sending 2000 of messages (2500/minute limit). We are using xmpp4r as a client that handles sending messages. Every user has same @xmpp.address. is the same in every message.

Our tigase logs, show that the messages did actually hit the jabber server and were sent to appropriate users, one at a time.

The issue we're experiencing is that although everything seemed fine, only a part of users actually got the message. (for example, at one point, considering 100 first messages sent - 1..20 and 91..100 got delivered, the middle 70 did not get delivered at all), we improved couple of things in the meantime but this still might be a clue.

We tried creating an array of 10000 duplicated JIDS (jids of couple of users were duplicated thousands of times), and every single message got delivered (and in the right order).

We already spent a couple of days trying different scenarios and are starting to run out of ideas what might be going wrong.

Got any idea's what we might have missed? Should I attach some additional data? Would be grateful for any help.

We asked this question on so aswell:

Replies (1)


Added by Artur Hefczyc TigaseTeam over 4 years ago


I responded on stacktexchange before found your post here as well. So I am copying my response here and let's continue the thread here:

There are some details not included in your post.

  1. What do you connect and how? Over standard XMPP connection, over Bosh, something else?

  2. What do you mean by "duplicated JIDs"? How did you duplicate JIDs?

  3. Are all the users for which a message is sent online during the test?

  4. If you can see message in Tigase logs, you should also see what happens to it. Was it submitted to network socket for delivery to a client?

  5. What kind of HW did you use? Is there a chance that the server was overloaded and simply dropped some messages? Seems unlikely if you talk about 100 messages and 70 of them not delivered.

  6. How do you actually know that a message was not delivered and are you sure the client/user was connected at the time?