Übersichtsseite lädt langsam

  • Miau :(


    gestern habe ich für 13 Planis saven eine halbe Stunde gebraucht, jetzt eben 1,5.


    Und weil ich ne faule Katze bin, war ich nur beim Punkt Schiffsfabrik und habe jeweils Renies und Spiosonden paar 9999999 eigentippt und die Planis durchgeklickt.


    Gerade eben waren es 1,5 Stunden.... :huh:


    Offenbar war jetzt eben der Server auch stellenweise mal nicht erreichbar (Fehlermeldung siehe Bild unten) .... :thumbdown:


    so ich rolle mich nu wieder in warme Katzenkörbchen und schlafe weiter...


    Aber keine Angst, die andere Katze in unserer Katzenvilla ist wach


    Miau Miau

    Dateien

    • geekwars.jpg

      (29,31 kB, 14 Mal heruntergeladen, zuletzt: )

    Kimba und Galaxis, die schönsten und kuscheligsten Katzen die es auf dem Planeten gibt. Aber auch die gefährlichsten im Geekwarsuniversum :evil:

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von Die_Katzenvilla ()

  • Die Übersichtsseite lädt verhältnismäßig schnell bei mir. Habt ihr mal geschaut ob sie schneller wird wenn ihr keine Flotten in der Luft habt?

    Die Übersichtsseite ist mit Abstand die schlimmste Seite im GW Spielkonzept. Es müssen Daten aus sehr vielen Quellen gezogen werden,

    also Flotten, Nachrichten, Planeten, Gebäudeschleife sowie Forschungsschleife.


    Wenn ich versuche über die Übersicht meine Verteidigungsnachrichten als gelesen zu markieren dann läuft der Request nach 65 Sekunden in ein Timeout,

    dabei ist das eigentlich eine ziemlich simple Aktion.

    SQL
    1. UPDATE messages SET read = 1 WHERE user = dabu AND message_type = 'defense'

    Vielleicht helfen ja ein paar Indices.


    Es macht mich etwas stutzig, dass ich den Timeout erst so Spät bekomme, man sollte da eigentlich nicht über 30 Sekunden gehen.

  • DaBu ,


    Vielleicht ist das des Pudels Kern, das Mautz weiterhilft. Es könnten die "Gefarmten" sein, die die DB beim update ans Limit bringen und dadurch andere Requests warten lassen.


    Man sollte aber auch nicht die Möglichkeit ausser Acht lassen, dass es vllt. ein DoS durch DAU ist :/

    Wenn eine Seite nicht schnell genug lädt, klicken manche wie bekloppt hundertmal auf den Link, was wiederum den Server erst recht in die Knie zwingt (sofern der Server das nicht automatisch verhindert).

  • Aus diesem Grund lief GigraWars mit einer nginx Konfiguration und nicht mittels Apache.

    Wenn der Webserver nicht mehr in der Lage war die Anfragen alle abzuarbeiten hat er sie einfach stumpf verworfen.


    Dadurch sind von den 20mio Request im Monat etwa 1k einfach hops gegangen, aber ich denke dass wird weniger gestört haben, als wenn ständig alles für alle langsam wird.

    (Ohne Werbung waren die Ladezeiten ja auch gut, zumindest wurde war mir nichts anderes bekannt) (Außer bei den User Konversationen *hust*)

  • Ich glaub dDas krichste mit nem billigserver nie performant hin, sei denn du splittest die DBs auf mehrere Server und sorgt damit für Lastverteilung. Da braucht man einfach Hardware... Da sind bisher alle dran gescheitert, die einen früher die anderen später.

  • Die Datenbank auf mehrere Server zu verteilen ist etwas übertrieben. Ich sag nur 800 aktive Spieler, 4 Kerne, 16 GB RAM und alles auf einer Kiste ohne nen Redis oder Memcached dazwischen zu haben.

    Einfach regelmäßig seinen Code überdenken und refectorn.


    Meine Nachrichtenseite ist etwas schneller geworden (etwa 2 Sekunden nur noch).

  • naja... ich hab keine Ahnung warum GalaxyWars schon immer ein performance killer war... :/ Vielleicht sollte man mal aufhören alle KBs bis auf alle Ewigkeit in der aktiven DB zu speichern. Vielleicht muss man mal über ein regelmäßiges "cleanen" der DB nachdenken. Aber wie gesagt stecke ich da zu wenig drin als das wirklich beurteilen zu können, ihr macht das schon^^

  • Ich könnte einen langen Monolog darüber halten warum das Spielkonzept von GW ein Performance Killer ist, aber ich belasse es bei einem Punkt der die größten Auswirkungen hat. Jeder kann so viele Flotten wie er möchte so schnell wie er möchte verschicken.


    Bezüglich der KB's die haben keinerlei Auswirkung auf die Performance, nur auf den Speicherbedarf. Man sollte nicht den Fehler machen welchen ich am Anfang gemacht habe, einfach alle Berichte auf Ewig speichern und erst nach 2 Jahren überlegen, dass die doch eine Menge Platz brauchen. Lieber direkt entscheiden nach welchen Kriterien man Berichte nach X Tagen/Wochen löscht.


    Die Berichte haben einen eindeutigen Schlüssel deswegen ist es der Datenbank (fast) völlig egal ob da nun 10 Berichte oder 500 Millionen in einer Tabelle stehen.


    Das Nachrichtensystem kann da schon eher schnell zu einem Problem werden, wenn das Design nicht nahezu perfekt gewählt wurde kann es schnell zu Problemen kommen (Den Fall hatte ich damals bei den Konversationen). Im Nachrichtensystem muss immer auf mehreren Spalten gesucht werden und ähnlich die die Kampfberichte Tabelle werden die Einträge hier sehr schnell, sehr viele. Im Regelfall sucht man nach einem Nutzer und einem Nachrichtentyp, legt man dann dafür einen Index an so kann man mit einer Zeile SQL Code das ganze System extrem beschleunigen.


    Um so mehr Spalten man mit einbeziehen muss für eine Abfrage (in der WHERE Bedingung) um so schwieriger wird es einen sinnvollen Index zu setzen und um so höher ist die Kardinalität (mehr Kombinationen).

    Fängt man nun noch bei großen Datenmengen mit Joins an so wird das ganze schnell sehr unschön.


    Am Schluss bleibt aber noch zu sagen, wenn ich das Spiel heute noch einmal schreiben müsste, würde ich vieles anders machen, es gibt Teile die ich selbst mit dem Refactorn nicht sinnvoll beheben konnte. Deswegen ist es nur logisch dass jeder der so ein Spiel entwickelt viele Konzeptfehler einbauen wird. Niemand hier entwickelt wohl regelmäßig Spiele mit genau diesem Konzept und sagen wir mal so, GW ist eben nicht irgendein OGame Klon bei dem man am Tag nur eine Handvoll Angriffe fliegen kann und wo solche Konzeptfehler nie auffallen werden.


    GW Verursacht mit wenigen Hundert aktiven Spielern in etwa eine Last wie ich sie sonst nur bei Webprojekten mit >100k Nutzern gesehen habe.

    Also abwarten, Andy wird schon einen Weg finden mögliche Konzeptfehler gerade zu ziehen, noch ist das erste Universum nicht gestartet, noch kann also alles leicht umgeworfen werden.

  • Ich bin trotzdem überzeugt, dass es an der Anzahl der KBs liegt.

    Begründung:
    Die Aktivität der Spieler hat die letzten Wochen mit Sicherheit mehr ab- als zugenommen. Das merke ich daran, dass ich extrem viele neue inaktive entdeckt habe, die man nun farmen kann. Da ich nicht der einzige bin, der die farmt, bedeutet das, dass die Anzahl der KBs steigt (durch das regelmäßige Farmen), wohingegen die Aktivität sinkt (weil weniger aktive Spieler).
    Gleichzeitig wird das Spiel immer langsamer. Wie wäre es, wenn Mautz einfach mal alle KBs bis beispielsweise 1.5. archiviert und dann schauen wir, ob sich was verändert?

  • Einfach die Nachrichten aus dem Nachrichtensystem löschen, die KB's selbst haben nichts damit zu tun.

    Das Aufrufen eines Berichts dauert etwa 150-300 ms. Schneller als alles andere im Spiel aktuell.

    Ich meinte ja auch, dass Mautz die Nachrichten löschen soll als Kurzfristlösung. Die KBs können natürlich auf dem Server bleiben. Die fressen keine Performance, nur Speicher.
    Ist unspielbar gerade.

  • Hallo zusammen, was mich wundert ist, dass die Zeiten so schwanken. Irgendwie glaube ich aktuell nicht, dass es an den Queries auf die Datenbank liegt, lasse mich aber gerne eines besseren belehren.


    Die Datenbank ist übrigens die gleiche Instanz wie das Forum - merkt man da auch Probleme, wenn es im Spiel langsam wird?


    Ich habe gerade das Logging aufgebohrt und hoffe, dass das Problem zeitnah wieder auftritt...


    DaBu und alle die es interessiert:

    Apache dient nur als Proxy, der HTTP-Server fürs Spiel läuft im Hintergrund auf Gunicorn. Evtl liegt dort das Problem...