If your server crashes at random, over and over, and it feels deliberate, it usually is. Repeat crashes are most often a crash exploit, not a performance problem.
A performance crash tends to build up: rising resource usage, lag, then a fall over. A crash exploit is sudden and repeatable, often timed to when a certain player is online. That pattern points at someone triggering it on purpose through your scripts.
The most common crasher just fires a server event thousands of times a second until a script or the server buckles. The fix is to rate limit events per player, so any single player is capped no matter how fast they send.
Many scripts assume the data a client sends is the right type and size. Send a giant string, a table where a number was expected, or a nil, and a fragile script throws and can take the server down. Validate the type and length of every argument before you touch it.
Spawning huge numbers of entities (vehicles, objects, peds) can overwhelm the server and every client on it. Watch for players creating entities far beyond normal limits and remove them.
If the attack is a traffic flood against your host rather than an in-game exploit, that is a DDoS, and it is handled with a properly configured firewall and DDoS protection at the host level. In-game crash exploits and network DDoS are two different problems, so make sure you are solving the right one.
DistortionUK finds the scripts an attacker can crash your server through, and shows you how to patch them. The first scoping look is free.