Welche Leistung kann ich von einem Raspberry Pi als Webserver erwarten?

39

Hat jemand ein Webserver-Benchmarking auf seinem Raspi durchgeführt? Ich habe meine Raspi noch nicht, aber ich plane, sie als Webserver zu verwenden, und ich möchte Statistiken sehen für:

  • Anzahl der Anfragen pro Sekunde
  • Reaktionszeit zwischen Anforderungen
  • Durchsatz (dh Bytes pro Sekunde)

Wenn diese für verschiedene Webserver-Software- und Betriebssystemkombinationen unterschiedlich sind, würde mich auch ein Vergleich interessieren.

AntonChanning
quelle
4
Kann die Abstimmung zum Abschluss bitte erklären, warum? Dies ist eine objektive Frage mit einer objektiven messbaren Antwort.
AntonChanning
1
Ich kann nicht verbindlich antworten, aber ich gehe davon aus, dass die schnellsten Webserver im Allgemeinen die schnellsten im RPi sein werden. Meine Vorliebe, Nginx.
Alex Chamberlain
@AlexChamberlain Vielen Dank, nützlich zu wissen, aber ich würde immer noch gerne sehen, welche Leistung das Gerät bringen kann, damit ich nicht plane, es für ein Projekt zu verwenden, das über seine Fähigkeiten hinausgeht ...
AntonChanning

Antworten:

28

Ich gehe davon aus, dass, wie Alex sagt, die Benchmarks zeigen werden, dass die schnellsten Linux-Webserver unabhängig von der Architektur immer noch die schnellsten sind.

Wenn jemand Benchmarks ausführen möchte, hat mir das folgende Tutorial geholfen:

So führen Sie Benchmarks auf einem Webserver durch


Statische Seiten bereitstellen

Ich habe das RPi mit Apache getestet und eine einfache statische Seite bereitgestellt:

<h1>It works!</h1>

Als Kontrollgruppe habe ich meinen primären Webserver verwendet, der die folgende Spezifikation enthält:

Intel(R) Xeon(R) CPU           X3323  @ 2.50GHz
384MB RAM

Die Ergebnisse sind wie folgt:

Steuerung

ab -n 1000 -c 5 http://www.ivings.org.uk/~james/index.html

Server Software:        Apache/2.2.14
Server Hostname:        www.ivings.org.uk
Server Port:            80

Document Path:          /~james/index.html
Document Length:        19 bytes

Concurrency Level:      5
Time taken for tests:   17.767 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      294000 bytes
HTML transferred:       19000 bytes
Requests per second:    56.29 [#/sec] (mean)
Time per request:       88.833 [ms] (mean)
Time per request:       17.767 [ms] (mean, across all concurrent requests)
Transfer rate:          16.16 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       42   44   0.8     44      50
Processing:    44   45   0.9     45      59
Waiting:       44   45   0.9     45      59
Total:         86   89   1.3     88     108

Percentage of the requests served within a certain time (ms)
  50%     88
  66%     89
  75%     89
  80%     89
  90%     90
  95%     91
  98%     91
  99%     94
 100%    108 (longest request)

Himbeer-Pi

ab -n 1000 -c 5 http://86.137.189.68/index.html

Server Software:        Apache/2.2.22
Server Hostname:        86.137.189.68
Server Port:            80

Document Path:          /index.html
Document Length:        19 bytes

Concurrency Level:      5
Time taken for tests:   23.186 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      304000 bytes
HTML transferred:       19000 bytes
Requests per second:    43.13 [#/sec] (mean)
Time per request:       115.930 [ms] (mean)
Time per request:       23.186 [ms] (mean, across all concurrent requests)
Transfer rate:          12.80 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       40   44   5.6     43     116
Processing:    49   71 156.1     57    2157
Waiting:       47   53   6.7     55     104
Total:         91  116 156.1     99    2198

Percentage of the requests served within a certain time (ms)
  50%     99
  66%    100
  75%    100
  80%    100
  90%    102
  95%    126
  98%    150
  99%    667
 100%   2198 (longest request)

Fazit

Hinweis: Dies wird am besten als Schätzung behandelt.

Die Ergebnisse zeigen, dass der Raspberry Pi tatsächlich eine verdammt gute Leistung erbringt. Es reagierte nur geringfügig weniger als mein primärer Webserver.

Es sollte in Ordnung sein, eine relativ große Anzahl von Anfragen zu bearbeiten.

Jivings
quelle
Das mag sein, aber welche Art von Leistung kann der Schnellste erbringen? Ich denke, Sie haben beide falsch verstanden, was ich zu fragen versuche ...
AntonChanning
1
Ich werde einige Benchmarks für Apache durchführen und auf Sie zurückkommen.
Jivings
Vielen Dank. Ich entschuldige mich, wenn meine Frage nicht klar war. Vielleicht habe ich das Wasser getrübt und nach einem Vergleich gefragt, als mein Hauptinteresse wirklich die Statistik für einen Standard-LAMP-Stapel war.
AntonChanning
1
Das "A" in LAMP steht für den Apache HTTP-Server ...
Roger Dahl
1
@Jivings: Es war ein Kommentar für das OP. Im ersten Kommentar zu Ihrem Beitrag hat er angegeben, dass er die Leistung des schnellsten HTTP-Servers ermitteln möchte, und er schien mit Ihrem Apache-basierten Benchmark unzufrieden zu sein. Dann fragte er implizit nach einem Apache-Benchmark (dem "A" in LAMP).
Roger Dahl
5

Apache ist nicht die beste Wahl, wenn statische Inhalte bereitgestellt werden. Dafür ist Nginx besser geeignet. Ich habe einen Benchmark mit http://lekensteyn.nl/index.html als Testdokument durchgeführt. Es ist ein größeres Dokument als das Beispiel von Jiving, da 19 Bytes für eine tatsächliche Seite nicht realistisch sind. Die Ergebnisse sind erstaunlich, das RPi übertrifft sogar meinen Arbeits-Laptop (möglicherweise, weil ich alle Arten von Kernel-Debugging-Schaltern aktiviert habe).

Hier ist nginx 1.4.1, das unter Arch Linux (RPi access_log off, kabelgebundenes Ethernet) ausgeführt wird:

$ ab -n 1000 -c 5 http://192.168.2.10/index.html

Server Software:        nginx/1.4.1
Server Hostname:        192.168.2.10
Server Port:            80

Document Path:          /index.html
Document Length:        2159 bytes

Concurrency Level:      5
Time taken for tests:   2.341 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      2392000 bytes
HTML transferred:       2159000 bytes
Requests per second:    427.18 [#/sec] (mean)
Time per request:       11.705 [ms] (mean)
Time per request:       2.341 [ms] (mean, across all concurrent requests)
Transfer rate:          997.86 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   0.1      1       1
Processing:     4   11   1.0     11      20
Waiting:        3   11   1.0     10      19
Total:          4   12   1.0     12      21

Percentage of the requests served within a certain time (ms)
  50%     12
  66%     12
  75%     12
  80%     12
  90%     12
  95%     12
  98%     17
  99%     18
 100%     21 (longest request)

Dies ist mein Laptop ( access_log off, kabelgebundenes Ethernet):

Server Software:        nginx/1.4.1
Server Hostname:        192.168.2.12
Server Port:            80

Document Path:          /index.html
Document Length:        2159 bytes

Concurrency Level:      5
Time taken for tests:   2.593 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      2392000 bytes
HTML transferred:       2159000 bytes
Requests per second:    385.62 [#/sec] (mean)
Time per request:       12.966 [ms] (mean)
Time per request:       2.593 [ms] (mean, across all concurrent requests)
Transfer rate:          900.79 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        2    6   3.4      5      82
Processing:     3    7   5.6      6      86
Waiting:        3    7   5.5      5      82
Total:          6   13   6.8     12      94

Percentage of the requests served within a certain time (ms)
  50%     12
  66%     13
  75%     14
  80%     15
  90%     17
  95%     19
  98%     24
  99%     34
 100%     94 (longest request)

Der Vollständigkeit halber mein Remote-Server. Dies ist langsamer, da die WAN-Verbindung der wahrscheinliche Engpass ist (auch access_lognicht ausgeschaltet ist):

Server Software:        nginx/1.2.8
Server Hostname:        lekensteyn.nl
Server Port:            80

Document Path:          /index.html
Document Length:        2159 bytes

Concurrency Level:      5
Time taken for tests:   11.074 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      2370000 bytes
HTML transferred:       2159000 bytes
Requests per second:    90.30 [#/sec] (mean)
Time per request:       55.371 [ms] (mean)
Time per request:       11.074 [ms] (mean, across all concurrent requests)
Transfer rate:          209.00 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       25   27   2.3     26      59
Processing:    28   29   2.3     28      59
Waiting:       26   27   2.4     27      59
Total:         53   55   3.8     55     102

Percentage of the requests served within a certain time (ms)
  50%     55
  66%     55
  75%     55
  80%     55
  90%     56
  95%     57
  98%     59
  99%     86
 100%    102 (longest request)

Mit mehr Parallelität und einer höheren Anzahl von Anfragen sollten die Zahlen zuverlässiger sein, da mehr Proben einbezogen werden können (als ich abim Drahtlosmodus gegen meinen Laptop lief , schwankten die Zahlen stark). Beachten Sie, dass beim Testen mit angemeldeten Zugriffsprotokollen die Dateisystempuffer unvorhersehbare Schreibverzögerungen verursachen, wenn sich das Protokollverzeichnis auf der SD-Karte befindet.

Lekensteyn
quelle