This is commonly known as "the warranty period". In software I have seen one month or three months used very often. I have never seen 6 months offered for a bespoke development warranty.
In terms of commercial support arrangements, they are many and varied. Reading between the lines, it seems you are a small outfit, perhaps one-man band? Assuming this, you will want to bear in mind that your resources are fairly finite and any long-tail support carries an opportunity cost for you- Any time you spend supporting the historical product is time you cannot spend on making more money elsewhere- so factor that in.
I have seen the retained resource model work well. Agree with the client how much time you both think they will need in support- let's say one day per month for argument's sake. Agree a rate for 12 days per year, bill them monthly or quarterly for that agreed amount (pro rata) and allow them to "call-off" their support time as and when they see fit or need it. But, crucially, agree a higher rate for anything they use over and above the agreed level. Then reconcile every three months, or monthly, or yearly (whatever works for you both) and "true up" how much they have used. If possible DON'T allow them to carry over unused support time across period boundaries else you are storing up a big cashflow/resource hit for yourself.
Another common way would be to calculate the support cost as a percentage of the build/project cost. 15-20% is common. But ensure your exposure is limited so that it cannot become an unsustainable overhead for you. Preferably also define up front what support can, and cannot be used for. You wouldn't, for example, want a client to call-off support time and use it for adding new functionality. Any new functionality you DO add, by whatever method, should add to the support bill using the same percentage. More code=more support time=greater support cost to the client. For this kind of arrangement annual billing in advance is common.