Well, everything struggles, not just IM. But regardless the experience is not a surprise.
Couple things that will help - maybe:
- Definitely update to the newest controller and hub you can. If nothing else that will satisfy the first ask support will make of you if you go the route of opening a support ticket. And the 7.93 versions are better than most of the others you might have. Careful with the OS support if you are using any 32 bit deployments as support for those gets dropped along the way.
-Set up your get queues and interaction between the tiers of hubs, manually if necessary, regardless of whether the hubs and queues show in the drop downs in the GUI. UIM learns the routes and network from activity on the network - usually broadcasts of information from various hubs. It seems though that the additional traffic from messaging helps it sort out what's right. At least it keeps the hubs asking to resolve names of other hubs.
- Turn off the hub broadcast feature
- On the intermediary hubs, if possible, set up firewall rules that will prevent communications in or out to any other hubs except the ones that are required.
- Restart discovery_server - make sure you are on the latest hotfix/release of that too
- Try to avoid restarting hubs - hubs are kind of like teenagers - they learn from and believe everything they see on the Internet (network) and once learnt, it's really hard to get them to unlearn. If a hub learns that another hub is down, it's going to hold onto that information until it learns otherwise. Problem is that in the meantime, it will be telling all its friends that this hub is down which might no longer be true.
- The whole learning process can take a surprising length of time - it's not instant and it's reliant on periodic broadcasts of information. With only a couple hubs it could take hours to work itself out. The frustrating thing is that next time it might be seconds. And the next time after that, days.