Blog

Warum selbst eine Spraydose viel zu langsam ist (für meine Zwecke)

Wilco Koorn

Aktualisiert Oktober 22, 2025
2 Minuten

In einem früheren Blog habe ich über die Geschwindigkeit des Spray-can Webservers gesprochen und einige Messungen erwähnt, die ich durchgeführt habe. Mein Kollege Age Mooij, Committer beim Spray-Projekt, wies mich auf 'weighttp' (siehe weighttp auf github) hin, ein Tool zum Benchmarking von Webservern. Toll! Natürlich musste ich nun weitere Experimente durchführen und das tat ich auch. Ich habe herausgefunden, dass Spray-can für meine Zwecke viel zu langsam ist, und hier ist der Grund dafür.

Erinnern Sie sich, dass es mir um die Bewältigung von Spitzenlasten im Netz geht. Ein Teil der Lösung (keine Details hier, sorry, vielleicht später), die mir vorschwebt, ist die Ausgabe einer ganzzahligen Nummer. Deshalb gibt der Spray-can Server zu diesem Zeitpunkt nur eine Zahl aus. Age hat diesen weighttp-Befehl vorgeschlagen:

weighttp -n 100000 -c 100 -t 4 -k 'https://xebia.com/blog:8080/dispatcher'

Und das habe ich getan. Ich habe:

finished in 2 sec, 302 millisec and 196 microsec, 43436 req/s, 5594 kbyte/s

Das ist kein Tippfehler, ich habe einen Durchsatz von 43k Anfragen pro Sekunde. Das ist beeindruckend. Wenn Sie das Zehnfache tun:

weighttp -n 1000000 -c 100 -t 4 -k 'https://xebia.com/blog:8080/dispatcher'

Ich bekomme sogar:

finished in 13 sec, 797 millisec and 56 microsec, 72479 req/s, 9420 kbyte/sThat's almost a throughput of 73k requests/sec!!! On a laptop! And I'm not even using the latest Spray-can version which is supposedly even faster.

BUT Beachten Sie die Verwendung des Schalters '-k'. Das ist der Schalter "keep alive". Hier sehen Sie, was passiert, wenn Sie ihn nicht verwenden:

weighttp -n 100000 -c 100 -t 4 'https://xebia.com/blog:8080/dispatcher'

Ich verstehe:

finished in 217 sec, 972 millisec and 939 microsec, 458 req/s, 68 kbyte/s

Que? Ein Durchsatz von nur etwa 450 Anfragen pro Sekunde? Was zum Teufel? Also habe ich mich weiter mit diesem "keep alive" beschäftigt. Mein guter Freund Google stieß auf persistente http-Verbindungen und ich las hier weiter: KeepAlive Unsinn Was bedeutet das für mich?

Nun, ich habe gelernt, dass Spray-can über eine hervorragende Leistung verfügt, wenn die Verbindung offen gehalten wird. Für meinen Zweck, die Bewältigung von Lastspitzen, ist dies irrelevant, da ich etwa 200k Anfragen innerhalb von 10 Sekunden bearbeiten möchte, diese Anfragen aber von verschiedenen Clients kommen. Daher ist das Experiment ohne den Schalter '-k' näher an der Realität. Ergo ist selbst Spray-can für meine Zwecke viel zu langsam. Zurück zum Zeichentisch. Ich habe heute eine Menge gelernt.

Verfasst von

Wilco Koorn

Contact

Let’s discuss how we can support your journey.