Vorschläge zur Datenbank Optimierung

  • Bevor der Entwickler, welcher dies hier liest, die Hände im Gesicht zusammen schlägt, bitte ich trotzdem darum einige Vorschläge wenigstens auf Plausibilität zu prüfen.


    Da ich weder das Datenbanksystem kenne, noch die verwendete Hardware oder das Betriebssystem, versuche ich die Vorschläge allgemein zu halten.


    ***


    Was der Laie vor dem Monitor in den Abendstunden aktuell bemerkt: Viele Klicks und Fenster bauen sich stark verzögert auf, oder bleiben leer.


    Auch bekannt ist, dass ein zeitlich begrenzter Andrang herrscht, während sich der Server zu bestimmten Uhrzeiten ausgiebig langweilt.


    Aber vielleicht kann man ja da was gegen machen.


    ***


    Durchsatzoptimierung der Datenbank


    - Zwischenspeicher / Cache / Ram-Zuweisung verändern


    - Bestimmte Datenbank-Dateien in eine persistente Ramdisk mounten


    - Mehr Worker Prozesse für bestimmte Datenbanken verwenden



    Datenaufkommen vermindern


    - Slow Querries protokollieren und analysieren ( Welche Prozesse im Spiel belasten die Datenbank?)


    - Optimierungen in der Spielmechanik (weniger Checks an bestimmten Stellen)



    Betriebssystem optimieren


    - Welche anderen Prozesse laufen auf dem Datenbankserver im Hintergrund?


    - Haben die Datenbankanwendungen volle Priorität?


    - Kann man unnötige DIenste und Funktionen abschalten (betrifft nur Windows :P)



    Hardware optimieren


    - Teilweises Upgrade von HDD auf SSD


    - Cache am Raidcontroller vergrößern (kann man nachkaufen)


    - Arbeitsspeicher reinstecken, falls der Server am Limit ist



    ***


    Eigentlich möchte ich nicht, dass sich ein Entwickler direkt dazu äußert.


    Vielleicht ergänzt meine Liste etwas den Gedankengang - das würde mir schon reichen.


    Vielleicht liege ich ja auch voll daneben und nichts trifft zu oder hilft.


    Aber dann hats trotzdem Spass gemacht, mal kurz darüber nachzudenken.

  • Schau dir mal den News-Bereich im Forum an


    News


    Neben den Ankündigungen zu den Neuerungen im Spiel finden sich auch immer wieder Beiträge des Entwicklers zu Themen wie Performance, interne Verarbeitung, Hintergründe zum Spiel.


    Insbesondere hier Serverausfall - Infos sind viele Interna im Video enthalten.


    Erst am 6.11. wurde ein weiterer Server dem Cluster hinzugefügt. Server hinzugefügt



    Bei aktuellen Problemen größerer Natur lohnt auch der Blick hier: Serverprobleme



    Aktuell sind übrigens rund 493.000 Spieler-IDs vergeben. Auch wenn keiner genau weiß, wieviele Karteileichen dabei sind und wer wie aktiv spielt kannst du davon ausgehen, dass einige tausend Spieler gleichzeitig online mehr die Regel als die Ausnahme sind. Jetzt guck mal für dich einen Spieler den externen traffic an und skalier das mal mit sagen wir mal 3000. Entsprechend viele Bytes müssen da erstmal durchs Internet und da fällt auch bei 0,0001 % Packet Loss noch genug hinten runter. Ich denke, gerade dieser "verzögerte Seitenaufbau" hat mehr mit nicht oder zu spät zugestellten Paketen zu tun als mit der internen Verarbeitung im Servercluster.

  • Ich glaube nicht, dass Du hier eine Antwort von @Sebastian bekommst, aber du möchtest ja eh keine.

  • Mir gefällt der Vorschlag DB-Dateien in einer RAM-DISK zu mounten - und nun grübel ich daran, was mir Oracle oder MS-SQL mit genau dieser DB-Datei anstellen würde :)
    Vorschläge in allen Ehren, aber @SIma86, erstmal kundig darüber machen, was und wie es genutzt wird. Eine Kristallkugel anwerfen und sagen: "Mach mal das" - funktioniert eben nicht.
    Mal nebenbei, eine Datenbank reagiert auch auf 5-10 User anders, als auf 100-500 oder gar 10.000.


    Und auch als Randnotiz, selbst der Client-PC an dem der Spieler sitzt und dessen Datenleitung, kann durchaus auch Probleme auslösen, die zu Lasten der Performance gehen, ohne das dies
    die DB betrifft.


    Aber ich finde, dass das Spiel aktuell recht stabil und performant läuft, insofern schätze ich, das Sebastian alles im Griff hat ;-)

  • Wenn es doch so einfach wäre ;)



    - Teilweises Upgrade von HDD auf SSD

    Nutze nur SSD. Festplatten wären zulangsam.


    - Welche anderen Prozesse laufen auf dem Datenbankserver im Hintergrund?

    Der Kernel, Logrotate, SSH und das wars vermutlich.


    Optimierungen in der Spielmechanik (weniger Checks an bestimmten Stellen)

    Das will keiner.


    - Cache am Raidcontroller vergrößern (kann man nachkaufen)

    Software-Raid ;)


    - Arbeitsspeicher reinstecken, falls der Server am Limit ist

    Server hat 64 GB, aktuell ausgelastet ca. 50 GB.

    Bestimmte Datenbank-Dateien in eine persistente Ramdisk mounten

    Was ist denn eine "persistente Ramdisk"? Schließt sich das nicht gegenseitig aus?

    Mehr Worker Prozesse für bestimmte Datenbanken verwenden

    Haben wir ;). Auf jedem "Rechenknecht" (davon gibt es aktuell 8 im Cluster) laufen bestimmt so jeweils 100 Worker.




    Ich sag mal so, alles was du vorgeschlagen hast, ist schon laaange umgesetzt.

  • Also zur "persistenten RAM-DISK" kann ich was dazu sagen, das war mal tatsächlich eine gängige Praxis um bei alten x86-Systemen (da waren die Taktraten noch im MHz-Bereich) unter DOS oder Windows die Sperrung der 16 & 32bit Limitierungen aufzuheben. Da hat man dann tatäschlich eine 2-4 GByte Große RAM-Disk persistent gemountet um auf Daten schnell zu zugreifen. Ähnlich hat man das auch mit non-persistent gemacht um den SWAP abzufangen.
    Das wurde aber eigentlich alles mit Win7 obsolet und seit es fast nur noch 64bit Systeme gibt, ist das Thema eh vom Tisch. Ein übriges tat dann noch die SSD. Also zum letztenmal hab ich von sowas unter Windows XP noch gehört.


    Aber beim Software-Raid würde ich theoretisch einhaken, ein Hardware-Raidcontroller sollte eigentlich schneller laufen - aber ob man sich daran nun aufhängen soll, wage ich zu bezweifeln ;-)