added template for server start script

This commit is contained in:
Krumel
2021-05-06 17:01:42 +02:00
parent ffd0c94741
commit a4670ac01d
4 changed files with 47 additions and 0 deletions

31
ServerStart.sh.template Normal file
View File

@ -0,0 +1,31 @@
while true; do
# prevent the server from being stopped again immediately
date +%s > /home/minecraft/scripts/lp_stamp
# run the server itself
# replace the jolokia agent and the forge jar with your versions
java -jar -Xms20G -Xmx20G -javaagent:jolokia-jvm-1.6.2-agent.jar\
-XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=100\
-XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50\
-XX:G1MaxNewSizePercent=80 -XX:G1MixedGCLiveThresholdPercent=50\
-XX:G1ReservePercent=20 -XX:ConcGCThreads=2 -XX:ParallelGCThreads=4\
-XX:InitiatingHeapOccupancyPercent=25\
-XX:+AlwaysPreTouch -Xloggc:gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps\
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=1M forge-1.16.5-36.0.1.jar nogui
echo "Server closed"
if (( $(cat /home/minecraft/scripts/lp_shutdown) > 0 )); then
echo "Server was empty for 14 days, waiting for connection..."
echo "0" > /home/minecraft/scripts/lp_shutdown
mcconn=0
until [ $mcconn -ne 0 ]; do
mcconn=$(nc -l 25500 | cat -v | grep -cF '^@cM-^\^B')
if [ $mcconn -eq 0 ]; then
echo "Something connected, but it doesn't look like a minecraft connection"
else
echo "Someone tried to connect to the minecraft server, starting..."
fi
done
else
echo "Restarting server in 5 seconds..."
sleep 5
fi
done

0
auto_shutdown.sh Executable file → Normal file
View File

16
readme.md Executable file → Normal file
View File

@ -44,6 +44,22 @@ Ein vollständigeres Regex, dass auf eine korrekte Verbindung prüft sieht so au
^\^X\^@M-r\^E\^Q[a-zA-Z0-9\.]+\^@[a-zA-Z0-9]+\^@cM-\^\\\^B\n\^@\^H[a-zA-Z0-9]+ ^\^X\^@M-r\^E\^Q[a-zA-Z0-9\.]+\^@[a-zA-Z0-9]+\^@cM-\^\\\^B\n\^@\^H[a-zA-Z0-9]+
``` ```
### Server Start Skript
Beim Starten des Servers wird eine große Menge an Parametern übergeben:
* `-Xms20G -Xmx20G`: Wie viel Heap am Start und Maximal reserviert wird; sehr großzügig gewählt
* `-javaagent:jolokia-jvm-1.6.2-agent.jar`: Jolokia Agent, genutzt um Monitoringdaten aufzunehmen
* `-XX:+UnlockExperimentalVMOptions`: Schaltet ein paar experimentelle Optionen frei
* `-XX:+UseG1GC`: Welcher Garbage Collection Algorithmus genutzt wird; da Minecraft nur auf Java 8 läuft ist leider G1GC die beste Option
* `-XX:MaxGCPauseMillis=100`: Sagt dem GC dass es versuchen soll den Hauptthread nicht mehr als 100ms zu pausieren; ist keine Garantie!
* `-XX:+DisableExplicitGC`: Sorgt dafür das explizite GC Aufrufe ignoriert werden, da dass jedesmal ein Full GC ist und Modder das ab und zu (fälschlicherweise) verwenden
* `-XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:G1MixedGCLiveThresholdPercent=50 -XX:G1ReservePercent=20`: Setzt ein paar Größen für die verschiedenen "Bereiche" des GC Algorithmus; werden so empfohlen, kA was das genau macht
* `-XX:ConcGCThreads=2 -XX:ParallelGCThreads=4`: Threads die für die verschiedenen Phasen der GC verwendet werden; können gut auf hohe Werte eingestellt werdn, da MC praktisch nur einen Thread nutzt
* `-XX:InitiatingHeapOccupancyPercent=25`: Ab wann ein concurrent GC Cyclus gestartet wird in % vom Max Heap; niedrig eingestellt, da Minecraft sonst viel zu spät damit anfängt
* `-XX:+AlwaysPreTouch`: "Berührt" den Heap Speicher beim Starten der JVM
* `-Xloggc:gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=1M`: Aktiviert das Logging der GC und richtet Logrotation ein
## Update Index ## Update Index
Kleines Skript, dass die html Seite die auf dem http(s) Port des Minecraft Servers angezeigt wird updated. Kleines Skript, dass die html Seite die auf dem http(s) Port des Minecraft Servers angezeigt wird updated.

0
update_index.sh Executable file → Normal file
View File