Upload innerhalb des Frameworks langsam

  • Affected Version
    WoltLab Suite 5.4
    Affected App
    WoltLab Suite Core

    Ich habe ein Problem mit dem internen Upload des Frameworks (Medienupload oder Packetaktualisierung z.B.)

    Upload über Frameworkfunktion:

    - Upload einer Datei mit 50MB Größe

    - Dauert ca. 6:30 min

    Upload über FTP oder simplen PHP-Uploadscript (multipart/form-data POST-form + move_uploaded_files) auf demselben Server/selbe PHP-Settings

    - 50MB Größe

    - Dauert ca. 20 Sekunden

    Ich bin aktuell im Ausland, wo das Internet (88/32Mbps, 325ms Ping zu deutschem Server laut Speedtest) natürlich schwankt, aber das kann nicht das eigentliche Problem sein, da der Upload über FTP und Script ja schnell funktioniert.

    Wie kann man das lösen? Wo liegt das Problem?

    Grüße

  • Hallo,

    Wie kann man das lösen? Wo liegt das Problem?

    ohne mehr Infos kann man dazu gar nichts sagen. Insbesondere nutzen Medienupload und Paketaktualisierung auch zwei komplett unterschiedliche Upload-Methoden.

    Zunächst wäre zu klären, ob „das Problem“ beim eigentlichen Upload oder bei der Verarbeitung durch PHP liegt. Die Entwicklertools bzw. die Protokolle deines Servers sollten Aufschluss geben.

  • Also was man vom access.log her sagen kann (und was ich auch in der Entwicklerkonsole so sichtbar ist), ist folgendes:

    Code
    0.0.0.0 - [11/Jun/2023:09:54:45 +0200] "POST /cms/acp/index.php?ajax-upload/&t=xxx-m15sG++1H9Xfsf2N8YwW9g== HTTP/2.0" 200 530 "https://example.com/cms/acp/index.php?media-list/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" "Traffic IN:52430701 OUT:720" "ReqTime:378 sec"
    0.0.0.0 - [11/Jun/2023:10:01:03 +0200] "POST /cms/acp/index.php?ajax-proxy/&t=xxx-m15sG++1H9Xfsf2N8YwW9g== HTTP/2.0" 200 1521 "https://example.com/cms/acp/index.php?media-list/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" "Traffic IN:259 OUT:1711" "ReqTime:0 sec"

    Das bringt einen aber vermutlich auch nicht viel weiter? Welche genauen Logs würden denn helfen?

  • Hallo,

    okay, das bedeutet, dass die Wartezeit beim tatsächlichen Upload-Vorgang (das Senden des HTTP-Requests inkl. Body) entsteht, während die Verarbeitung am Server mit 419ms angemessen schnell ist.

    Hast du die entsprechende Darstellung auch für dein simples PHP-Testskript (da braucht's nicht mal eine PHP-Implementierung, das form mit input type=file reicht)?

  • Hallo,

    ich frage mal nicht, warum man überhaupt noch unverschlüsselte Verbindungen nutzt bzw. zulässt. Insbesondere dann, wenn man sich im Ausland befindet.

    Ansonsten ist das an dieser Stelle dann natürlich ein kompletter Vergleich von Apfel und Birne. Zum Einen entfällt der Overhead durch TLS und zum anderen kommt ohne TLS HTTP/1.1 zum Einsatz, während es mit TLS vermutlich HTTP/2 ist, das eine komplett andere Charakteristik besitzt.

    Wenn du es näher untersuchen willst, dann empfehle ich dir die Verwendung von tcpdump bzw. Wireshark, um den TCP-Stream näher anzusehen. In jedem Fall hat unsere Software keinen Einfluss auf den Upload-Prozess, das ist Sache des Webbrowsers, des Webservers bzw. Load-Balancers, der TLS-Bibliothek von Webbrowser und Server und dem TCP-Stack der beiden beteiligten Betriebssysteme.

  • ich frage mal nicht, warum man überhaupt noch unverschlüsselte Verbindungen nutzt bzw. zulässt. Insbesondere dann, wenn man sich im Ausland befindet.

    Weil das nur eine temporäre Subdomain war, gerade für diesen Test. Sicherheitshalber also kein SSL gebraucht, für den Test aber wohl doch ausschlaggebend.

    Ja, ich werde morgen mal den Framework Upload auf einer nicht SSL Domain testen. Wenns da schnell geht, ist das Problem ja klar. Dann muss ich damit leben.

    Danke dir

  • Hallo,

    Dann muss ich damit leben.

    nicht unbedingt. Durch entsprechende Konfiguration des TLS-Stacks bzw. der HTTP/2-Implementierung lässt sich da auch noch was an Geschwindigkeit herausholen.

    Diese HAProxy-Issue dürfte genau das Problem treffen, dass du siehst:

    Slow file uploads when using HTTP/2 · Issue #293 · haproxy/haproxy
    Since we enabled HTTP/2 we noticed a huge speed difference while uploading big files. A 10MB file takes 12 seconds when HTTP/2 is enabled, and when it is…
    github.com

    Relevant ist insbesondere auch der erste Kommentar von Willy.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!