This depends on the amount of triangales or functions that have been launched to the server. Using unions would help, but you should also optimize your scripts and even don’t use too much Lights(this is one of the most lag producers). If you want to optimize your game, I’d recommend decreasing the amount of instances and objects inside your project.
About the scripts part, I disabled every single script in the game and the spike was still there.
I understand the amount of parts can lag the server, but it should lag it always, not only when a new player joins. That’s my logic, tell me if I am wrong.
That won’t help, unions are not nearly as efficient as parts nor meshparts. If you have parts, don’t even try to make them into unions, they’re not really useful anymore.
About the topic, inspect each single piece of your game, if you suspect from a specific thing like the map or the lights lagging the thing out, just take them out to another test place and if the lag is still there, well, at least it is not a virus and just a performance problem from you.
Are any parts unanchored? Or this could also be because you have a lower end computer which can’t handle your map size and assets. One thing you can do is request someone to try it out and see if they have the same problem. If they do not get the same result, then it is your computer’s problem. If they do, then maybe make some adjustments to map size.