Switching Relay at Zero_Cross Point
While randomly switching it without zero-cross my controller gets
restart

That's a susceptibility weakness of your controller.

To avoid this I'm switching relays at the zero-cross point

Sounds like you intend to swallow a spider to catch a fly. Where does this stop I wonder?
Use this opportunity for improving the EMI rejection of your controller. The controller (any controller) should not be susceptible to this. Fixing your controller is the best long-term advice you will get.
Should you not heed this advice and one day you are presented with a load that is inductive in nature, instead of switching at the voltage zero-cross you will need to switch at the peak of the voltage (where the current passes through zero).
And, if you do decide to press ahead with synchronizing the switching then, it would be better to switch at the load current zero-cross. Of course, you may have been planning to do that all-along but, your question wasn't clear. Take into account both switching times and, if it's 10 ms (for example) then begin switching 5 ms before the zero-cross.
You might also consider that when switching off you shouldn't use a diode clamp on your relay but a zener/diode clamp to ensure the off-speed is minimized.