There is a really great book called When Your Kids Push Your Buttons which I found really helpful. It's only 99p on kindle which is well worth it.
IME when I'm getting frustrated like that it's because I need a break. You say "we" so you have a partner. Can they give you a break e.g. one evening a week to do your own thing and half a weekend day? Maybe the occasional overnight trip? We don't have family support either but this kind of thing from DH keeps me sane.
The other 2-3 things that I tend to find lead to me feeling this way are when I have got a bit too loose with the rules/boundaries and need to tighten them up, when I've got a bit too lax at enforcing the boundaries/rules I have put in place, or when there's not enough structure to the day in general.
What I mean with the first one is that you probably already do this with safety boundaries - you probably get your 3yo to hold your hand when by roads, walk on the house side and with some distance from the road. You don't let them balance on the kerb while you amble along more than an arm's length away, because if they tripped they would already be in danger and you wouldn't be able to stop them before they fell into the road. When they walk on the non-car side and hold your hand, you can stop them well before they are near any danger and so you don't get to a panicky state about it.
So you can do the same kind of thing with other rules/boundaries as well. Sometimes I fall into the trap of mentally setting the boundary/waiting to intervene until the problem is actually imminent and that means that when they are going over the boundary, it's already a problem and I am in more "emergency brake mode" trying to deal with it, which is not especially calm from me, it's much more reactive and irritated or shouty. If I can anticipate the issue and set the boundary earlier, then I can react in a calmer way. The reason I tend to do this is because I feel like a boundary earlier is "articificial" or unfair and doesn't make sense, and I should only stop behaviour if it's actually a problem, but stopping it earlier on tends to save me being right at the end of my tether when I have to step in and do something.
The second thing is where I might have the boundary too far out/too close to the problem or I might have it in a reasonable place but because I'm trying to be "fun mum" or because I'm too tired or whatever other excuse I make to myself, I'm not actually stepping in to enforce the boundary or saying no to something and I think to myself "Ah just this once", but it's not happening once, it's happening a lot more than that. This creates a problem because you actually have to enforce the rule 95%+ of the time for the DC to actually perceive it as a rule. That means saying no 20 times if you say yes once. What it took me far too long to realise is that when I was saying yes or letting things go more often than not, DC were perceiving that whatever I was saying "yes" to was the rule, and then when I said no, I was just being mean and unreasonable because it was like I was enforcing some kind of restriction/punishment as they had internalised "yes" as the rule. In my head the rule was no but the yes was an exception, but children don't see it like that unless you're being consistent about it.
Then lastly the structure part is because IME children tend to get a bit feral without structure which makes them more prone to the irritating/silly wind up type behaviours, and because it allows me to pace myself a bit throughout the day. When I know what we're doing (roughly) in which slot of the day I can think ahead and do the park trip in the part of the day I've got more energy, or take some time out of playing with them so I can recharge a bit or whatever. I also find it easier to balance their activities as if I don't make a plan they can end up having too much screen time or not enough activity and that also makes their behaviour worse. I'm more naturally a go with the flow type person so I resisted this a lot but it really does make a big difference.