Ich mag Schildkröten!
Ich bin auf der Arbeit über eine API (nicht von uns!) gestolpert, die 5,5 Sekunden braucht, um zu antworten.
Aus wissenschaftlicher Neugier habe ich überprüft, ob sich die Antwortzeit erhöht, wenn man mehrere Anfragen parallel abschickt. Dabei habe ich festgestellt, dass man im Alleingang (!) diese API DOSen kann, indem man im Takt von 500ms Anfragen stellt. Nach ca. 20 Sekunden schafft es der Gateway-Server dann nicht mehr, seinen Upstream-Server zu kontaktieren.
Neuland und so.
Ich bin kein ITler, aber 40 Anfragen in 20 Sekunden klingt wie etwas, was selbst ein RaspPi locker abfrühstückt.
Hat da jemand wilde Datenbankabfragen / Schleifen gebastelt, oder was läuft da schief? Optimiert niemand mehr auf Effizienz?
In dem Fall ging es um eine API, die anzeigt, wie voll eine Sauna ist. Meine Theorie ist, dass da erst einmal ein Foto an eine KI geschickt wird, die die Menschen zählen soll.
Hab gestern prototypisch eine API hingezimmert, damit die Studentin das weitertreiben kann, wo mit dem aktuellen Stand quasi eine API-Anfrage reinkommt, dann wird eine Bibliothek aufgerufen, die erstmal selbst eine HTTP-Anfrage macht, um Quellcode herunterzuladen, diesen dann zu kompilieren, um dann aus dem Kompilat Meta-Information auszulesen.
Achso, und natürlich macht die API das N mal, weil es N Elemente gibt, deren Meta-Informationen dabei aufgelistet werden sollen.
Das hat sich auch richtig falsch angefühlt, weil man natürlich immer die Befürchtung hat, dass das auf ewig so bleibt, und dann sowas rauskommt, wie bei dir. 🥴
Tippt an Stirn Software kann nicht verrotten, wenn sie schon als Scheißhaufen beginnt.
Öhm… ernsthaft jetzt? Welche Sauna ist das? Frage nur, damit ich sie meiden kann…
Das muss die im Klärwerk sein.
War keine ernsthaft vorgetragene Hypothese.
In der Regel sind das Frameworks, die da zum Einsatz kommen und wenn man deren Paradigmen beachtet, passiert sowas eigentlich nicht. Wenn man aber keine Ahnung von Parallelität hat und dazu nicht weiß, wie man das Transportprotokoll nutzt, dann passiert eben sowas.
Jeder halbwegs versierte Entwickler weiß, dass man solche Anfragen nicht derart blockend implementiert.
Hatten wir auch. Wir mussten gegen das tolle System eines Kunden implementieren, das in die Luft geflogen ist, weil es nicht parallel arbeiten kann (Frühlingsstiefel übrigens - muss man erstmal schaffen). Also haben wir unser paralleles System genommen und es absichtlich verlangsamt, weil man sowas offensichtlich unmöglich da angehen kann, wo die Ursache überhaupt liegt.


