| neue Message hinzufügen |

zu geballert oder zugeballert? kili 2016-12-26 23:36:14
musste mal sein ;-)

Was die Frage angeht, warum das frueher so schoen wuppte, mit den 50 Threads:  frueher war zwar mehr Lametta, aber auch weniger  Games in der Datenbank. Kann durchaus sein, dass das Spielerstellen inzwischen wg. der Groesse der Datenbank langsamer geworden ist, und sich das Karo zu ballert, wenn es mit 50 parallelen Spielerstellungen zugeballert wird.

-- kili

50 Threads?? Didi 2016-12-26 12:31:53

Krass, das würde ich mich ja nicht mal bei Twitter trauen...

Ne, mal ernsthaft, das ist zu viel. Insbesondere, weil ich jetzt genau aus dem Grund jetzt ja das Logfile prüfe und größer 25 x newgame.php in 60 Sekunden die IP blocke.

Der Server is mittlerweile mit so viel Zeug zu geballert, dass es bei der Menge schon mal gut sein kann, dass er sich verschluckt. Und abgesehen davon blockt es die PHP-Prozesse für alle anderen.

Also: Runter mit den Threads und Timeout nach Fehlversuch, sonst Ban. Aktuell nur 600 Sekunden, aber schön is das ja auch nicht

:)idi

ultimate 2016-12-20 13:09:36
Also aristarch hat Recht. Das "Spiele doppelt erstellen" und "Server zuballern" sind zwei völlig unabhängige Probleme. Ersteres habe ich mit der Version 2.4a gefixt und für letzteres werde ich dann wohl nach meinem Urlaub auch mal einen Fix bauen in dem ich die Thread-Anzahl runterschraube und bei Fehlern eine kleine Pause einbaue. Das sollte dann hoffentlich den Stress deutlich reduzieren. Ich versteht zwar nicht, warum das Problem erst jetzt so verstärkt auftritt, aber was soll's...

Bis dahin erstmal frohe Weihnachten

Madeleine 2016-12-19 23:05:35
Ich hab da seit einigen Wochen einen ganzen Stapel "Gaststarter"-Spiele auf Gentlemen's Agreement oder wie das Ding heißt. Das war garantiert nicht nur ein überflüssiges Häkchen ...

Senf... Karaser 2016-12-18 23:46:31
Als ich das erste mal die TWM 1-Spiele erstellen wollte (120 auf einen Schlag) hatte ich genau das gleiche Problem wie das neulich.
Da hat der MUSKEL auch etliche schon erstellt, sich dann aber aufgehängt und laut Didi tausende Requests auf den Server prasseln lassen, dass meine IP fast gebannt wurde. Ich musste dann den Muskel per Taskmanager abschießen und hatte eine halb erstellte Spieleserie.
Da musste ich dann Didi beten, dass er mir die Rennen löscht, beim nächsten Versuch (wieder 120 auf einmal) hat dann aber alles geklappt.

Das klingt irgendwie nach dem gleichen Problem, schätze ich...

50 Threads sind viel zu viel... kili 2016-12-18 21:37:43
Der Karoserver selbst hat nur 50 Bedienerprozesse. Wenn man da gleichzeitig 50 Spiele zu erstellen versucht,  macht man Karopapier schonmal komplett dicht, alle weiteren Requests muessen sich dann hinten anstellen oder rennen frueher oder spaeter in einen Timeout, Bad Gateway, whatever.

Ich glaube, fuer normale Clients (sprich: Browser) galt mal die Benimmregel, nicht mehr als 4 Requests gleichzeitig an die gleiche Domain rauszukloppen. Das sollte der MUSKEL IMHO auch tun.

Und, wie unten schon geschrieben: Fehler bei der Spielerstellung => erstmal eine Wartepause einlegen, bevor man weitermacht.

Ciao,

-- kili

ps: mit dem Problem letzten Dienstag kann ich mich insgesamt an drei Totalausfaellen von Karopapier erinnern, die mit dem MUSKEL in Zusammenhang standen (und die ich live und in Farbe mitbekommen habe). Da Didi aber schon beim ersten mal ziemlich heftig in Richtung Massenspielerstellung geflucht hatte, vermute iich mal start, dass da noch mehr waren ;-)

aristarch 2016-12-18 19:24:41
Achtung Madeleine, es gab 2 verschiedene Probleme mit dem Muskel.

Das eine war ein internes Muskelproblem beim "Häkchen setzen", oder genauer gesagt beim "Häkchen wegmachen". Dieser Fehler hat dazu geführt, dass manchmal Spiele erstellt wurden, die noch gar nicht dran waren (z.B. spätere Spieltage der Liga) oder manche Spiele doppelt erstellt wurden.  
Dieses Problem konnte identifiziert und lokalisiert werden und ultimate hat vor kurzem eine Version 2.4a erstellt, bei dem das behoben ist.
Fast alle mir bekannten Vorfälle in der Vergangenheit dürften auf dieses Problem zurückzuführen sein - was jetzt hoffentlich vom Tisch ist.

Das andere Problem wird nicht vom Muskel alleine, sondern von seiner Interaktion mit dem Karoserver verursacht. Das hat kili weiter unten sehr gut beschrieben. Da kann ich nur hinzufügen dass ich wirklich genau 50 Spiele erstellen wollte (nicht nur 40), insofern sind die Anfragen des Muskel für 50 gleichzeitig konsistent.
Und ja, das ist mir tatsächlich vor wenigen Monaten schon mal passiert - so wie kili schreibt mit Spielerstellungen bis hinein in den folgenden Tag.
Meines Wissens waren das die beiden einzigen Vorfälle dieser Art.

Nie Probleme? Madeleine 2016-12-18 18:39:24
Komisch, ich kann mich durchaus schon an etliche Gelegenheiten erinnern, bei denen der Muskel das gleiche Spiel mehrfach erstellt hat - wahrscheinlich, weil Karopapier dem entsprechenden Thread nicht schnell genug geantwortet hat.

Wieviel Zeit gibt denn der Muskel, innerhalb derer Karopapier antworten muss? Ist da ein einstellbarer Timeout-Parameter?

ultimate 2016-12-18 14:45:41
Also ich versuche mal kurz zusammenzufassen, wie der KaroMUSKEL die Spiele erstellt, möchte aber - bevor ihr laut schreit "So kann man das doch nicht machen!" - noch was klarstellen:

Das war schon immer so!

Ich weiß, das ist keine besonders gute Ausrede, aber bisher hat sich nie einer beschwert und es scheint auch nie Probleme gegeben zu haben. Und da ich bzgl. der Spieleerstellung nichts geändert habe, muss sich irgendwas anderes (bei Karo?) geändert haben, was jetzt bei der Verwendung des KaroMUSKELs eine Grätsche macht...

Und so läuft es ab: (Habe das extra nochmal im Code gescheckt)

Der KaroMUSKEL erzeugt für jedes zu erstellende Spiel einen (zunächst schlafenden) Thread, den er in eine Queue packt. Aus dieser Queue werden dann immer bis zu X (parametrierbar im Code, aktuell eingestellt auf 50*) Threads aktiviert, die dann ihr jeweiliges Spiel zu erstellen. Dabei versucht jeder Thread sein Spiel so lange zu erstellen, bis er erfolgreich war. D.h. wenn der Thread kein "Spiel erstellt" von Karo zurück bekommt, versucht er es einfach (sofort) noch mal.

Daraus folgt, dass am Anfang maximal 50* Anfragen gleichzeitig auf die Karo einprasseln und danach kommen immer genau so viele Anfragen nach, wie (erfolgreich oder auch nicht) beendet wurden. Bei Spieleserien mit weniger als 50 Spielen können es aber auch nur maximal so viele Anfragen gleichzeitig sein, wie es Spiele gibt.

*Die 50 ist übrigens nicht zufällig so gewählt. Ich habe am Anfang der Entwicklung des KaroMUSKELs ein wenig zwischen Wert 1 und 100 experimentiert und festgestellt, dass dieser Wert die beste Geschwindigkeit beim Erstellen zur Folge hatte. (Eine höhere Anzahl Threads hat eine höhere Fehlerquote bei Karo und damit mehr zusätzliche Versuche zur Folge. Eine geringere Anzahl hat die Dauer für das Erstellen (aus meiner Sicht unnötig) verlängert.)

Eine Strategie, wie kili sie vorschlägt hatte ich nie in Erwägung gezogen, weil es ben nie Probleme gab und es auch nie Beschwerden seitens der Nutzer des KaroMUSKELs oder seitens Didi gab.

Ich hoffe das hilft ein bisschen den KaroMUSKEL besser zu verstehen. Btw. soweit ich mich erinnere setzt der KaroMUSKEL brav seinen User-Agent, es sollte also kein Problem sein ihn zu identifizieren...

So, und nun zerreißt mich in der Luft

Aus dem Gedaechtnis... kili 2016-12-15 23:09:35
50 php-fpm Prozesse fuer das Karo, 100 MySQL-Threads, alles war aber idle, d.h. das muss irgendwo in einem Deadlock gehangen haben. Didi hatte dann mehrfach das Karo (d.h. das php-fpm) durchgestartet, nach jeweils 5 - 8 Sekunden war dann wieder Schicht im Schacht. D.h. innerhalb von 5 - 8 Sekunden waren mindestesn 50 Request auf das Karo eingeprasselt (wg. der 50 wartenden Prozesse). Didi hat was von insgesamt 8000 Spielerstellungsversuchen innerhalb von 1.5 Stunden geschrieben, aristarch hatte wollte aber wohl nur eine Serie mit 40 Spielen oder so starten, das passt also nicht zusammen.

Wir hatten neulich schon mal den Verdacht, dass der MUSKEL mit Fehlern (z.B. Timeout beim warten auf die HTTP-Response) den gleichen Request einfach nochmal rauskloppt. Das darf natuerlich nicht passieren. Wenn ueberhaupt, dann sollten die Daten fuer die Requests, zu denen es einen Fehler (wie z.B. keine Response) gibt, erstmal in einer Queue gesammelt und dann am besten nur dem Benutzer angezeigt oder nach einer angemessenen Zeit ein neuer Request dafuer rausgeschoben werden. Und es sollte auch immer erst der Request fuers naechste Spiel rausgeschickt werden, wenn der aktuelle Request korrekt beantwortet oder eben in einen Fehler gelaufen ist. Wiederholungsversuche sollten in der Anzahl limitiert und mit immer groesser werdenden Abstaenden verschickt werden.

Und was mir auch noch (von frueher) einfaellt: aristarch (glaube ich zumindest) ist sowas vor einigen Wochen schonmal passiert. Er hat dann den MUSKEL beendet, es wurden aber die ganze Nacht ueber weiter Spielerstellungen getriggert. D.h. da sind wohl noch Hintergrundthreads gewesen, die munter weiter versucht haben, Spiele zu erstellen.

Weitere Beobachtungen kann evtl. Didi beisteuern.

Ciao,
-- kili

Auweia ultimate 2016-12-15 09:53:12
Ich hab nix mitbekommen!? Was ist denn passiert?

MUSKEL-Zuckungen kili 2016-12-13 22:06:26
Moin,

da heute Karopapier leider aml wieder durch russische Hacker^W^Wvermutlich den KaroMUSKEL lahmgelegt wurde, eine Bitte an die MUSKEL-Benutzer: bevor Ihr mit dem MUSKEL eine Spielreihe erstellt, schreibt das bitte kurz in den Chat, wartet ein paar Minuten, und legt erst dann los. Dann kann man (insbesondere Didi) schneller sehen, was evtl. der Grund fuer einen Ausfall des Karos ist.

Und wenn jemand eine Serienerstellung ankuendigt dann sollten andere bitte erst eine halbe Stunde spaeter selbst zum MUSKEL greifen, damit man das besser trennen kann.

Das behebt natuerlich nicht die eigentlichen Probleme (amokzuckender MUSKEL, Karopapier wg. zu vieler neuer Spiele am Anschlag), aber es spart erstmal einiges Rumgestochere bei der Fehlersuche.

-- kili

| neue Message hinzufügen |
| Anfang | Vorherige | Nächste |

Brought to you by Didi

Letzter Satz im Chat:
mAvErICk (3:50): Danke :-)