Nur so (fürs nächste mal), damit du die Timings auch selber deuten kannst:
Der Graph oben ist die Serverleistung. Grün sind die TPS, rot ist der TPS-Verlust in Prozent. Mit dem Balken unten kannst du die gesamten Timings zeitlich einschränken. Das ist sinnvoll, da dich ja nur der Bereich interessiert, in dem der Server laggt (Dec 27, 2019 1:26 PM - Dec 27, 2019 2:07 PM ).
Nachdem du das gemacht hast, musst du rechts von "Lag" auf "All" wechseln. "Lag" ist nützlich für Lagspikes, jedoch nicht für generellen TPS-Verlust.
Jetzt kannst du einen Blick auf die Tabelle werfen. Die wirkt auf den ersten Blick sehr verwirrend mit vielen Zahlen und Prozentangaben, ist jedoch eigentlich ganz einfach: Wichtig für dich ist die Spalte "% of Tick". Das ist die Zeit, die der Server zur Berechnung pro Tick benötigt. Sobald diese Zeit insgesamt (die oberste Zeile, "Full Server Tick") über 100% steigt, werden nicht mehr 20 Ticks pro Sekunde (TPS) erreicht, da der Server innerhalb eines Ticks nicht mit seinen Aufgaben fertig wird.
Weiter unten kannst du dann z.B. sehen, das "TickEntities" (also das berechnen von Mobs etc.) 65% der Serverberechnung pro Tick benötigt. Wenn du das jetzt durch einen Klick ausklappst kannst du wiederrum sehen, das entity.nms.Bat (Also Fledermäuse) 9% der Serverleistung benötigen.
Die Timings können noch einiges mehr aber ich hoffe das hilft einfach beim Grundverständnis.
Jetzt zu deinem Server: Der Lag wird klar durch zu viele geladene Entities verursacht. Das es insbesondere Bats sind, ist wahrscheinlich Zufall. Du kannst Entities mit verschiedenen Einstellungen in den Server-Config-Dateien performanter machen, ohne das es im Gameplay bemerkbar wird.
Grundsätzlich: Den Server mit
Aikars Flags zu starten hilft, den Performance-Verlust durch die Garbage Collection zu minimieren. So etwas taucht nicht in den Timings auf, ist aber besonders bei deiner RAM-Menge hilfreich und sorgt dafür, das so viel RAM überhaupt etwas bringt.
Bukkit.yml:
Setze bei
spawn-limits ambient: deutlich herunter. Am besten auf 1 oder 2. Dadurch spawnen weniger Ambient-Mob (Bats). Die restlichen
spawn-limits würde ich so lassen, da Mobs sonst schnell sehr selten werden. Sollten deine Spielerzahlen steigen, kannst du das Limit aber noch etwas reduzieren, ohne das es bemerkbar wird.
Etwas erhöhen (vielleicht auf 3 oder 4) kannst du
ticks-per monster-spawns.
Spigot.yml
entity-activation-range
Das ist die Entfernung von einem Spieler, in der Mobs aktiv werden. Dies kannst du ruhig auf
animals:16, monsters:24, raiders: 48, misc:8 setzen, ohne das die Spieler es merken.
tick-inactive-villagers würde ich ebenfalls auf
false setzen.
Zusätzlich dazu empfiehlt sich (bei Servern die Mobfarmen erlauben),
nerf-spawner-mobs auf
true zu setzen. Dies deaktiviert die AI von Spawner-Mobs.
Ebenfalls besonders bei Mobfarms ist
max-entity-collisions hilfreich. Setzte das am besten auf 2 oder 3. Das beeinflusst das Verhalten der Mobs kaum, verhindert aber übermäßiges überprüfen von Kollisionen bei vielen Mobs an einer Stelle.
Paper.yml:
Da euer Server ohne Protection-Plugin läuft, kannst du
hopper: disable-move-event beruhigt auf
false setzen. Das kann sehr viel Leistung sparen, sobald Spieler anfangen Farmen mit vielen Hoppern zu bauen und wird nur benötigt, wenn man ein Chest-Protection-Plugin nutzt.
Wenn du oben
nerf-spawner-mobs gesetzt hast, solltest du hier
spawner-nerfed-mobs-should-jump aktivieren, damit Mobfarmen weiterhin funktionieren.
Die restlichen Optionen die hilfreich sein können hast du bereits gesetzt.
Das wären die Optionen, die denke ich die Server-Performance gut verbessern können, ohne irgendwelche Regeln (z.B. zu Mobfarmen) einzuführen oder Vanilla-Verhalten zu sehr zu ändern.