Dogs should go into heat for 3 weeks, every 6 months. 3 months is definitely too long and you should have your dog checked out by the vet. There could be a hormonal imbalance or another problem that you need to treat. I hope that everything is ok. Wishing you and your dog the best.