Que tipo de desempenho posso esperar do uso de um Raspberry Pi como servidor da web?

39

Alguém já fez algum servidor de benchmarking em seus Raspi? Ainda não tenho meu Raspi, mas estou pensando em usá-lo como servidor da Web e estou interessado em ver estatísticas para:

  • Número de solicitações por segundo
  • Tempo de resposta da latência entre solicitações
  • Taxa de transferência (ou seja, bytes por segundo)

Se estes forem diferentes para diferentes combinações de SO e software de servidor da Web, também estaria interessado em ver uma comparação.

AntonChanning
fonte
4
A votação para encerrar pode explicar por que? Esta é uma pergunta objetiva com uma resposta objetiva mensurável.
214123 Anton -hanning
11
Não posso responder com autoridade, mas acho que os servidores Web mais rápidos em geral serão os mais rápidos no RPi. Minha preferência, Nginx.
Alex Chamberlain
@AlexChamberlain Obrigado, útil saber, mas eu ainda estaria interessado em ver o tipo de desempenho que posso obter do dispositivo, para não planejar usá-lo para um projeto além de suas capacidades ...
AntonChanning

Respostas:

28

Espero que, como Alex diz, os benchmarks mostrem que os servidores Web Linux mais rápidos ainda serão os mais rápidos, independentemente da arquitetura.

Se alguém quiser executar benchmarks, o seguinte tutorial foi útil para mim:

Como executar benchmarks em um servidor web


Exibição de páginas estáticas

Testei o RPi usando o Apache, que serve uma página estática simples:

<h1>It works!</h1>

Como grupo de controle, usei meu servidor Web principal, que contém as seguintes especificações;

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

Os resultados são os seguintes:

Ao controle

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)

Conclusão

Nota: É melhor tratá-lo como uma estimativa.

Os resultados mostram que o Raspberry Pi realmente teve um desempenho muito bom. Foi apenas um pouco menos responsivo do que meu servidor da web principal.

Deve ser bom lidar com um número razoavelmente grande de solicitações.

Jivings
fonte
Pode ser que sim, mas que tipo de desempenho o mais rápido pode produzir? Acho que você tem tanto mal entendido o que eu estou tentando perguntar ...
AntonChanning
11
Vou executar alguns benchmarks no apache e retornar para você.
Jivings
Obrigado. Peço desculpas se minha pergunta não foi clara. Talvez eu tenha enlameado a água pedindo comparação, quando realmente estatísticas para uma pilha LAMP padrão eram meu principal interesse.
AntonChanning
11
O "A" em LAMP representa o servidor Apache HTTP ...
Roger Dahl
11
@Jivings: Foi um comentário destinado ao OP. No comentário inicial à sua postagem, ele indicou que está interessado em encontrar o desempenho do servidor http mais rápido e parecia descontente com seu benchmark baseado no Apache. Em seguida, ele pediu implicitamente um benchmark do Apache (o "A" no LAMP).
21411 Roger
5

O Apache não é a melhor opção ao veicular conteúdo estático, o nginx é mais adequado para isso. Fiz um benchmark usando http://lekensteyn.nl/index.html como documento de teste. É um documento maior que o exemplo do Jiving, pois 19 bytes não são realistas para uma página real. Os resultados são surpreendentes, o RPi supera até o meu laptop de trabalho (talvez porque eu tenha todos os tipos de opções de depuração do kernel habilitadas).

Aqui está o nginx 1.4.1 em execução no Arch Linux (RPi,, access_log offEthernet com fio):

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

Este é o meu laptop ( access_log offethernet com fio):

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)

Para completar, meu servidor remoto. É mais lento, com a conexão WAN sendo o provável gargalo ( access_logtambém não está desativado):

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)

Com mais simultaneidade e maior número de solicitações, os números devem ser mais confiáveis, pois mais amostras podem ser incluídas (quando eu corri abcontra o meu laptop no modo fios / sem fio, seus números flutuaram bastante). Observe que, ao testar com logs de acesso, os buffers do sistema de arquivos causam atrasos imprevisíveis de gravação quando o diretório de log está no cartão SD.

Lekensteyn
fonte