• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Bungeecord BanSystem

heras

Kuhfänger
Mitglied seit
25 Juli 2019
Beiträge
69
Diamanten
0
Minecraft
xTailsPvP
Hallo,
ich möchte mir einen BanSystem mit Mysql machen und hätte da eine Frage. Meine Frage ist ob es irgendwie möglich ist das man vermeidet, dass bei jedem Join eine Mysql Abfrage gemacht wird, damit ich Ressourcen sparen kann. Denn es ist ja für einen Server sehr aufwendig wenn das ein Spieler ausnutzt und jedes mal den Server neu betretet und das vlt. mit 2 oder 3 Freunden, bis der Server abstürzt. Ich habe da zwar daran gedacht das man die gebannten Spieler temporär in HashMaps speichern könnte und erst beim stoppen des Servers auf Mysql übertragen könnte und beim starten des Servers könnte ich dann wieder eine Hashmap erstellen mit den gebannten spielern. Doch das würde später mit Multi-Proxy nicht klappen.
 

Malfrador

Threadripper
Mitglied seit
16 Juni 2013
Beiträge
1.387
Diamanten
200
Minecraft
Malfrador
Das mit der Hashmap scheint mir jetzt erstmal keine allzu schlechte Idee zu sein. Sprich, nur einmal eine Abfrage machen und ab da die gebannten Spieler cachen. Sinnvollerweise bei temporären Banns mit dem Ablaufdatum des Banns, so es nicht vorkommt, das jemand den Server nicht betreten kann, nur weil er noch gecached ist.
Das zu machen schadet sicher nicht - für notwendig halte ich es allerdings auch nicht.

Ich sehe allerdings nicht, wie ein MySQL-Abfrage den Server zum abstürzen bringen soll. Die müssen (!) außerhalb des Main-Threads passieren, sonst machst du etwas grob falsch. Und wenn du deine MySQL-Verbindung vernünftig nutzt sollte das auch eigentlich nicht länger als ein paar Millisekunden dauern, die Abfrage zu machen - es geht ja nicht nur um hunderte Datensätze, sondern exakt einen. Dazu gehört natürlich auch die Nutzung eines Connection-Pools, anstatt die Verbindung jedes mal neu aufzubauen etc. Wenn du davon keine Ahnung hast, Finger weg von Datenbanken und erst Ahnung anlesen.

Multi-Proxy? Really? Das ist ein System, das ist sinnvoll ab etwa 1000 bis 5000 gleichzeitigen Spielern. Wenn du soweit bist, kannst du dir darüber Gedanken machen. Davor nicht, denn alles bis 5000 Spieler kann zumindest Velocity mit einem einzigen Proxy durchaus bewerkstelligen - Netzwerkverbindung und möglicherweise gewünschtes Load Balancing mal außer acht gelassen. Aber auch das sind Punkte über die du dir mit unter 2500 gleichzeitigen Spielern wenig Sorgen machen musst.
 

heras

Kuhfänger
Mitglied seit
25 Juli 2019
Beiträge
69
Diamanten
0
Minecraft
xTailsPvP
Das mit der Hashmap scheint mir jetzt erstmal keine allzu schlechte Idee zu sein. Sprich, nur einmal eine Abfrage machen und ab da die gebannten Spieler cachen. Sinnvollerweise bei temporären Banns mit dem Ablaufdatum des Banns, so es nicht vorkommt, das jemand den Server nicht betreten kann, nur weil er noch gecached ist.
Das zu machen schadet sicher nicht - für notwendig halte ich es allerdings auch nicht.

Ich sehe allerdings nicht, wie ein MySQL-Abfrage den Server zum abstürzen bringen soll. Die müssen (!) außerhalb des Main-Threads passieren, sonst machst du etwas grob falsch. Und wenn du deine MySQL-Verbindung vernünftig nutzt sollte das auch eigentlich nicht länger als ein paar Millisekunden dauern, die Abfrage zu machen - es geht ja nicht nur um hunderte Datensätze, sondern exakt einen. Dazu gehört natürlich auch die Nutzung eines Connection-Pools, anstatt die Verbindung jedes mal neu aufzubauen etc. Wenn du davon keine Ahnung hast, Finger weg von Datenbanken und erst Ahnung anlesen.

Multi-Proxy? Really? Das ist ein System, das ist sinnvoll ab etwa 1000 bis 5000 gleichzeitigen Spielern. Wenn du soweit bist, kannst du dir darüber Gedanken machen. Davor nicht, denn alles bis 5000 Spieler kann zumindest Velocity mit einem einzigen Proxy durchaus bewerkstelligen - Netzwerkverbindung und möglicherweise gewünschtes Load Balancing mal außer acht gelassen. Aber auch das sind Punkte über die du dir mit unter 2500 gleichzeitigen Spielern wenig Sorgen machen musst.
Ich habe mal einen Test gemacht, wo ich im ChatEvent ein Mysql Abfrage gehabt habe und dort haben wir mir 3 oder 4 Leuten geschafft den Server durch spammen zum abstürzen zu bringen. Ich habe dort natürlich auch nur eine connection verwendet und nicht immer eine neue Verbindung aufgebaut. Doch ich habe keinen neuen Thread verwenden, kann es daran liegen?
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Mitglied seit
19 Mai 2014
Beiträge
1.603
Alter
4
Diamanten
438
Doch ich habe keinen neuen Thread verwenden, kann es daran liegen?
Vermutlich liegt es hierran. Aber die Gründe können vielseitig sein. Datenbankzugriff muss asynchron erfolgen, wenn er nicht die Performance beeinflussen soll. Außerdem kann man auch simple Quries richtig schlecht schreiben. Wenn du den vollständigen Code postest, ist vielleicht jemand so nett und guckt kurz nach offensichtlichen Fehlern.

Die andere Möglichkeit wäre, dass die Datenbank gar nicht auf dem selben Server läuft, das hab ich jetzt schon ein paar mal gesehen und dann kannst die eigentlich alles vergessen.
 

heras

Kuhfänger
Mitglied seit
25 Juli 2019
Beiträge
69
Diamanten
0
Minecraft
xTailsPvP
Vermutlich liegt es hierran. Aber die Gründe können vielseitig sein. Datenbankzugriff muss asynchron erfolgen, wenn er nicht die Performance beeinflussen soll. Außerdem kann man auch simple Quries richtig schlecht schreiben. Wenn du den vollständigen Code postest, ist vielleicht jemand so nett und guckt kurz nach offensichtlichen Fehlern.

Die andere Möglichkeit wäre, dass die Datenbank gar nicht auf dem selben Server läuft, das hab ich jetzt schon ein paar mal gesehen und dann kannst die eigentlich alles vergessen.
Wieso darf der Datenbank nicht auf einem anderen Server laufen?
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Mitglied seit
19 Mai 2014
Beiträge
1.603
Alter
4
Diamanten
438
Weil du dann mindestens die Netzwerklatenz zwischen den beiden Servern zusätzlich einberechnen musst. Und im Vergleich zu 20ms Ping, ist das Datenbank IO geradezu lächerlich. Wenn du den Code richtig asynchron aufbaust, ist das allerdings oft kein Problem, da du ohnehin davon ausgehen musst, dass das Datenbank IO langsam ist.
 
Oben