I kept my swap intact, but set swapiness to 0. That fixed like 75% of load spikes. Swapiness at 0 keeps swap usage available, but it will only be used in dire situations to avoid OOM. On my dedi servers that have 250gb of ram this is ideal, as ram usage never surpasses 60gb and the rest is cache - if I ever needed to use swap for any reason I would have MUCH bigger issues to deal with.
On small vps swap might be better to allow usage in special cases where it's preferable to OOM situations that could more easily creep up due to limitation of resources, but I would still keep swapiness real low, because (especially on vps) you're gonna have IO limits that will bottleneck and cause load spikes, so I might only run a 5 swapiness.
Removing limitations for IO, and limiting backups to 1 concurrent also greatly improved random load spikes. Still keep limitations for cpu/ram/nproc, though they are pretty generous. I think when the backup system runs it takes up 1 cpu at 100% against the website/account, so if you have a package with only 1 cpu limit then it's gonna have problems during the cpu run, so I would recommend no package lower than 2 cpu to avoid backups from causing issues/load spikes/503 errors on sites. Of course, that's not too bad a problem if it's only 1 backup per day and done at a time of night where most of your customers don't have traffic or work to do - but we run backups every 4 hours all day so it could be a big issue for customers if it didn't have the resources available to run.