2017-04-05 3 views
1

Ich sehe ein Problem mit höher als erwartet CPU-Verbrauch aufgrund der Anfrage Körper Verarbeitung. Meine einfache application wird mit vertx-web erstellt. Es akzeptiert eine POST-Anfrage, die Geltendmachung der Körperlänge stimmt mit der Kopfzeile der Inhaltslänge überein. Diese Anwendung wird mit 2 HTTP-Operationen unter Verwendung einer driver bewertet. Der erste sendet 1k und der zweite sendet 8k. Jeder einmal pro 1000 Millis. Der Körper ist nur Text.HTTP-Anfrage Body Parsing Ergebnisse in High-CPU-Verbrauch

Während Benchmarking Ich habe stackdumps zeigt mehrere Threads in der gleichen Methode gefunden

io.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.parseBodyAttributes

<code>enter image description here</code>

zu weiter untersuchen Ich habe JFR an den Serverprozess angehängt und den Benchmark erneut ausgeführt. Der JFR zeigt die Netty-Methode parseBodyAttributes ist die 93,5% der Stichprobenmethoden.

HTOP zeigt zwei Kerne, die fast zu 100% gepinnt sind.

enter image description here

Wird das Verfahren wurde wie dieser vor auszuführen gesehen?

+0

Das Festlegen des Inhaltstyps half dabei, den Overhead zu erklären. Die Verwendung von "application/json" umgeht das Parsing. Während "multipart/form-data" analysiert werden muss. –

Antwort

0

Zurückgehen und Überprüfen der Konfiguration des Ladetreibers zeigte, dass sich die Anzahl der Bytes von denen im ursprünglichen Kommentar unterscheidet. Statt 1k war es 1024k und 8192k. Dies beginnt, die Ebene der Parsing-Aktivität mit Multipart/Form-Data-Inhalt zu erklären.