• bleistift2@sopuli.xyzOP
    link
    fedilink
    Deutsch
    arrow-up
    14
    ·
    7 hours ago

    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.

    • Asinus@feddit.org
      link
      fedilink
      arrow-up
      12
      ·
      7 hours ago

      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?

      • bleistift2@sopuli.xyzOP
        link
        fedilink
        Deutsch
        arrow-up
        7
        ·
        5 hours ago

        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.

        • Ephera@lemmy.ml
          link
          fedilink
          Deutsch
          arrow-up
          5
          ·
          4 hours ago

          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. 🥴

      • aaaaaaaaargh@feddit.org
        link
        fedilink
        arrow-up
        3
        ·
        edit-2
        2 hours ago

        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.

    • aaaaaaaaargh@feddit.org
      link
      fedilink
      arrow-up
      4
      ·
      7 hours ago

      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.