I am pretty sure that blizzard has an auto-disconnection scheme that is triggered when you stay too much time gathering the same zone.
I have tested some very solid profiles, and it simply will get disconnected for no reason when staying too much time at the same zone. The trigger time is probably 4h +.
A way to solve this issue is using a profile changer plugin, that will change between two profiles each 2 or 3 hours. Another way is simply using multi-zone profiles.
I can recommend Uldum + Hyjal profile swapping, or Uldum + Silithus profile swapping.
Staying for 1 hour in any other zone will reset the blizzard disconnection timer.
Uldum for 3 hours -> Silithus for 1 hour -> uldum for 3 hours... etc
Uldum for 3 hours -> Hyjal for 2 hours -> Uldum for 3 hours -> Hyjal for 2 hours.... etc
(RECOMMENDED)
You can get a very stable Hyjal profile at THIS LINK.
You can get a profile swapper plugin at THIS LINK.