When I have gotten them, it has usually been after/at the end of a long (several days to a week or two) period of stress/worry. My dentist gave me a prescription "ointment" to apply that has antibiotic elements in a waxy substance. It only takes a dab (using the end of a Qtip to apply) on the sore and it makes like a waxy bandaid to cover the sore and protect it from rubbing against the teeth, and help them heal.
I've never had one last more than 2-3 days. And only get them once every year or two, if that. But that little tube is wonderful when I do get them. A TINY tube has lasted me years. I asked the dentist about it at one of my last few visits, to be sure it was safe to continue using since it is so old, and he said that it was. That the antibacterial properties (which are actually fairly minimal) are probably no longer effective, but that if it gives me relief from the protective coating/barrier, that it wouldn't hurt to do so.
It wasn't expensive.
It isn't a cause or a cure, but something to help during the suffering.
I would consult with the allergist and possibly the dentist about why he might be getting them so often.