Che tipo di prestazioni posso aspettarmi dall'uso di un Raspberry Pi come server Web?


39

Qualcuno ha fatto un benchmarking del web server sul proprio Raspi? Non ho ancora il mio Raspi ma sto pensando di usarlo come un server web e sono interessato a vedere le statistiche per:

  • Numero di richieste al secondo
  • Tempo di risposta di latenza tra le richieste
  • Throughput (ovvero byte al secondo)

Se questi sono diversi per differenti combinazioni di software server Web e OS, sarei anche interessato a vedere un confronto.


4
Il voto per chiudere può spiegare perché? Questa è una domanda obiettiva con una risposta misurabile obiettiva.
AntonChanning,

1
Non posso rispondere in modo autorevole, ma credo che i server web più veloci in generale saranno i più veloci sull'RPi. Le mie preferenze, Nginx.
Alex Chamberlain,

@AlexChamberlain Grazie, utile da sapere, ma sarei comunque interessato a vedere il tipo di prestazioni che posso ottenere dal dispositivo, quindi non ho intenzione di usarlo per un progetto al di là delle sue capacità ...
AntonChanning,

Risposte:


28

Mi aspetto che, come dice Alex, i benchmark mostreranno che i server web Linux più veloci saranno ancora i più veloci, indipendentemente dall'architettura.

Se qualcuno vuole eseguire benchmark, il seguente tutorial mi è stato utile:

Come eseguire benchmark su un web server


Serve pagine statiche

Ho testato l'RPi usando Apache che serve una semplice pagina statica:

<h1>It works!</h1>

Come gruppo di controllo ho usato il mio server web principale che contiene le seguenti specifiche;

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

I risultati sono i seguenti:

Controllo

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)

Raspberry 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)

Conclusione

Nota: questo è meglio trattato come una stima.

I risultati mostrano che il Raspberry Pi ha effettivamente funzionato maledettamente bene. Era solo leggermente meno reattivo rispetto al mio server web principale.

Dovrebbe andare bene gestire un numero ragionevolmente elevato di richieste.


Potrebbe essere così, ma che tipo di prestazioni può produrre più velocemente? Penso che entrambi avete frainteso quello che sto cercando di chiedere ...
AntonChanning,

1
Eseguirò alcuni benchmark su Apache e ti risponderò.
Jivings,

Grazie. Mi scuso se la mia domanda non è chiara. Forse ho confuso l'acqua chiedendomi un confronto, quando in realtà le statistiche per uno stack LAMP standard erano il mio interesse principale.
AntonChanning,

1
La "A" in LAMP sta per il server HTTP Apache ...
Roger Dahl,

1
@Jivings: era un commento destinato all'OP. Nel commento iniziale al tuo post, ha indicato che è interessato a trovare le prestazioni del server http più veloce e non sembra soddisfatto del benchmark basato su Apache. Quindi ha continuato a chiedere implicitamente un benchmark Apache (la "A" in LAMP).
Roger Dahl,

5

Apache non è la scelta migliore quando si offre contenuto statico, nginx è più adatto a questo. Ho fatto un benchmark usando http://lekensteyn.nl/index.html come documento di prova. È un documento più grande dell'esempio di Jiving poiché 19 byte non è realistico per una pagina reale. I risultati sono piuttosto sorprendenti, l'RPi supera anche il mio laptop di lavoro (forse perché ho tutti i tipi di switch di debug del kernel abilitati).

Ecco nginx 1.4.1 in esecuzione su Arch Linux (RPi,, access_log offethernet cablato):

$ 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)

Questo è il mio laptop ( access_log off, ethernet cablato):

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)

Per completezza, il mio server remoto. È più lento con la connessione WAN che rappresenta il probabile collo di bottiglia ( access_lognon è disattivato):

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)

Con una maggiore concorrenza e un maggior numero di richieste, i numeri dovrebbero essere più affidabili poiché possono essere inclusi più campioni (quando ho incontrato il abmio laptop in modalità fili / wireless, i suoi numeri hanno oscillato molto). Si noti che quando si esegue il test con i log di accesso, i buffer del file system causano ritardi di scrittura imprevedibili quando la directory dei registri si trova sulla scheda SD.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.