added template for server start script
This commit is contained in:
31
ServerStart.sh.template
Normal file
31
ServerStart.sh.template
Normal 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
0
auto_shutdown.sh
Executable file → Normal file
16
readme.md
Executable file → Normal file
16
readme.md
Executable file → Normal 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]+
|
||||
```
|
||||
|
||||
### 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
|
||||
|
||||
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
0
update_index.sh
Executable file → Normal file
Reference in New Issue
Block a user