Steam Client Timeout auf Server

  • Ich habe die Tage im OZ.Tools plugin eine property hinzugefügt um den log4j logger zu deaktivieren, dann werden von allen plugins die logs ins hauptlog geschrieben. Das könnte den memory footprint minimal verkleinern. Ich habe die Version nur noch nicht getagged

  • Ich habe alle Log-Level auf ERROR und alle Event Logs (in den Utils) auf false - da dürfte eigentlich fast gar nichts geloggt werden, oder?


    Hat das Wetter etwas mit dem Server RAM zu tun? Es gab vorhin ein Gewitter mit Regen und da war wieder eine spürbare Erhöung:

  • Nein, das Wetter hat eigentlich keinen Einfluss auf den RAM (zumindest serverseitig)... du kannst aber den Native-Memory weiter aufbröseln indem du serverinfo nativememory in die Konsole eingibst - damit siehst du, welcher Bereich des Spiels wieviel nativen Speicher verbraucht. Der erste Wert ist hier ausschlaggebend (den "Total" Wert dahinter kannst du ignorieren). Mit BildAuf und BildAb kannst du dann in der Konsole hoch- und runterscrollen :)

  • Das war heute kurz vor dem Timeout:


    Was bedeutet der Wert bei Cpp? Bzw. spricht irgendein Wert dafür dass der RAM ausgereizt wurde und daher die Timeouts kommen?

  • noch ein paar Werte von gerade eben (2 Spieler online)

    mir kommt da nichts verdächtig vor -es ist irgendwie total willkürlich-:


    Das einzige was mir komisch vorkommt sind die Startparameter vom Server (immer anders).

    AMD Ryzen 7 5800X 8-Core Processor, 16 Cores, 3632 MHz

    AMD Ryzen 7 5800X 8-Core Processor, 16 Cores, 3712 MHz

    AMD Ryzen 7 5800X 8-Core Processor, 16 Cores, 3722 MHz

    AMD Ryzen 7 5800X 8-Core Processor, 16 Cores, 2874 MHz

  • noch ein paar Zahlen - letzter Wert vor Crash

    (AMD Ryzen 7 5800X 8-Core Processor, 16 Cores, 3632 MHz):

    Fehler beim ersten Neustart

    (AMD Ryzen 7 5800X 8-Core Processor, 16 Cores, 4425 MHz):

    Erster Wert nach gelungenem Neustart

    (AMD Ryzen 7 5800X 8-Core Processor, 16 Cores, 2882 MHz):

    (glaube das sind jetzt erst mal genug Zahlen und hoffe, man kann irgendwelche Rückschlüsse ziehen)

  • ok - ich habe jetzt noch einen anderen Anbieter genommen (wo ich wahrscheinlich bleiben werde)


    Der Server dort hat die gleichen Startschwierigkeiten, wenn ein geplanter Neustart ist und nimmt 2-3 Anläufe:

    ABER - dort konnte ich jetzt auch eine hs_err_pid Datei finden die ich mal anhänge


    Jetzt würde ich wirklich gerne mal wissen was hier vor sich geht :thinking:

  • Ah okay, dann geht es wohl um diese Methode hier


    Aber was daran genau problematisch ist kann nur red51 beantworten befürchte ich 😅

  • Der Crash wird möglicherweise durch den Aufruf Server.getAllAreas() durch das Plugin verursacht :thinking: Schwer zu sagen, was hier tatsächlich das Problem ist... JNI ist leider sehr pingelig und gleichzeitig sehr schweigsam bei Fehlern oder Problemen.


    Das hier ist die C#-seitige Implementation von Server.getAllAreas():


    Sofern ich nichts übersehe könnte ich mir nur zwei Dinge vorstellen: Entweder die zur Area zugewiesene "javaArea" aus irgendeinem Grund nicht mehr valide ist. Die "javaArea" wird als globale Referenz gespeichert (damit sie nicht vom Java Garbage Collector erfasst wird).


    Oder aber es steht der VM kein Speicher mehr zur Verfügung und das Erstellen des neuen Arrays schlägt fehl. Das Spiel prüft leider nicht, ob "env.NewObjectArray()" ein valides Array zurückgegeben hat (was nicht der Fall wäre, wenn zB kein Speicher mehr frei ist). Andererseits würde spätestens "env.SetObjectArrayElement()" darauf anschlagen, von daher weiß ich nicht, ob das überhaupt in Frage kommt... und innerhalb der Schleife gibt es auch keine neuen Allocations, daher sehe ich eigentlich keinen Bedarf für ein PopLocalFrame/PushLocalFrame o.ä :huh:


    Devidian Unter welchen Umständen wird denn in deinem Plugin "isAreaIntersecting()" aufgerufen? Gibt es evtl. Situationen, in denen das sehr häufig aufgerufen wird (zB mehrmals hintereinander oder jeden Frame)?


    SonoBionda Kann es sein, dass im Moment des Crashes oder kurz zuvor zB eine Area erstellt oder gelöscht wurde? Können andere Spieler generell ihre Area löschen bzw. haben sie Zugriff auf die Creative-Modus Area Werkzeuge (F9)?


    Du könntest sonst evtl. nochmal folgendes zur server.properties Datei hinzufügen:

    Plugins_JNIXcheck=True

    und

    Plugins_JNIVerbose=True


    Damit könnte die Log-Datei dann ggf. ein paar mehr Informationen enthalten im Falle eines Crashes. Wenn es dann wieder crasht, poste bitte einmal die Log-Datei bzw. zumindest das Ende der Log-Datei (oder sende mir den Log via PN) und vll auch die hs_err_pid :)

  • Hmm also eigentlich war das hauptsächlich dafür gedacht beim erstellen zu prüfen ob eine existierende area, z.b. eine über F9 erstellte oder von einem anderen Plugin erstellte bereits den aktuellen chunk berührt oder im Fall das man einen claim erweitert wird der chunk geprüft in dem die area erweitert werden soll. Und wenn dem so ist sollte das erstellen oder erweitern unterbunden werden. Ja man kann Areas wieder löschen, die Methode verwendet aber dann diese Methode nicht, allerdings glaube ich das ich weiss worauf du hinaus willst, wenn jemand eine area löscht während getAllAreas ausgeführt wird dann könnte es eine null ref geben. Das aber so oft zur gleichen Zeit erstellt und gelöscht wird ist eher unwahrscheinlich, also wird ein Methode wohl wirklich zu oft diesen call machen.

    Es gab aber auch noch andere Stellen wo ich das aufgerufen habe, ich werde mal sehen ob ich die calls dort reduzieren kann, ich glaube an mindestens einer Stelle kann ich es definitiv anders lösen.

  • Ich hab einige Stellen nun ausgetauscht und player.getCurrentArea(); verwendet wo es möglich war. Es sollte jetzt wirklich nur noch beim erstellen einer Area verwendet werden.

    Bitte einmal die v0.6.1 ausprobieren SonoBionda

  • Habe alles in die Wege geleitet -die beiden Einträge in die Properties und Landclaim 0.6.1

    Dann schaun wir mal ;)



    mir fällt da noch was ein:

    Ich hatte mit dem F9 Tool einige Server Areas erstellt und dabei nicht auf die Chunkborders geachtet. Das könnte vllt. den stellenweise Multirequest erklären. Ich werde die noch mal neu aufziehen und an den Chunkborders ausrichten.


    Was ich auch noch ansprechen möchte ist die falsche Handhabung der Permissions nach dem claimen red51 - egal ob mit Tool oder über das Plugin - die werden nicht aktualisiert wenn man sich dann aus dem geclaimten Bereich entfernt - erst nach einem erneuten Einloggen

  • Ja das mit den Permissions der Areas stimmt. Wenn man eine Area löscht in der man sich gerade befindet, bleiben die aktuellen permissions bestehen. Auch wenn man respawned hat man noch die permissions aus der zone in der man gestorben ist, ist mir zumindest öfter mal aufgefallen.

  • Das Problem scheint gelöst zu sein. Seit der Änderung von LandClaim keine crashes mehr :!::thumbup::love:


    GTX nutzt den Scheduler zum Neustart und nachdem ich hier gelesen hatte, dass man restart durch shutdown ersetzen soll braucht es auch keine mehrmaligen Anläufe mehr.


    Vielen Dank für Eure Hilfe :)

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!