¿Qué tipo de rendimiento puedo esperar al usar una Raspberry Pi como servidor web?

39

¿Alguien ha realizado alguna evaluación comparativa del servidor web en su Raspi? Todavía no tengo mi Raspi, pero estoy planeando usarlo como servidor web y estoy interesado en ver las estadísticas de:

  • Número de solicitudes por segundo.
  • Tiempo de respuesta de latencia entre solicitudes
  • Rendimiento (es decir, bytes por segundo)

Si estos son diferentes para diferentes combinaciones de SO y software de servidor web, también me interesaría ver una comparación.

AntonChanning
fuente
44
¿Puede la votación para cerrar por favor explique por qué? Esta es una pregunta objetiva con una respuesta medible objetiva.
AntonChanning
1
No puedo responder con autoridad, pero creo que los servidores web más rápidos en general serán los más rápidos en el RPi. Mi preferencia, Nginx.
Alex Chamberlain
@AlexChamberlain Gracias, es útil saberlo, pero todavía estaría interesado en ver el tipo de rendimiento que puedo obtener del dispositivo, así que no planeo usarlo para un proyecto más allá de sus capacidades ...
AntonChanning

Respuestas:

28

Espero que, como dice Alex, los puntos de referencia muestren que los servidores web Linux más rápidos seguirán siendo los más rápidos, independientemente de la arquitectura.

Si alguien quiere ejecutar puntos de referencia, el siguiente tutorial me ha sido útil:

Cómo realizar benchmarks en un servidor web


Sirviendo Páginas Estáticas

He probado el RPi usando Apache que sirve una página estática simple:

<h1>It works!</h1>

Como grupo de control, utilicé mi servidor web principal que incluye la siguiente especificación;

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

Los resultados son los siguientes:

Controlar

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)

Conclusión

Nota: Esto se trata mejor como una estimación.

Los resultados muestran que la Raspberry Pi realmente funcionó muy bien teniendo en cuenta. Solo respondía un poco menos que mi servidor web principal.

Debería estar bien manejar un número razonablemente grande de solicitudes.

Jivings
fuente
Puede ser así, pero ¿qué tipo de rendimiento puede producir el más rápido? Creo que ambos han entendido mal lo que intento preguntar ...
AntonChanning
1
Realizaré algunos puntos de referencia en apache y me pondré en contacto con usted.
Jivings
Gracias. Pido disculpas si mi pregunta no fue clara. Tal vez enturbié el agua pidiendo una comparación, cuando realmente las estadísticas de una pila LAMP estándar era mi principal interés.
AntonChanning
1
La "A" en LAMP representa el servidor HTTP Apache ...
Roger Dahl
1
@Jivings: Fue un comentario destinado al OP. En el comentario inicial de su publicación, indicó que estaba interesado en encontrar el rendimiento del servidor http más rápido y parecía descontento con su punto de referencia basado en Apache. Luego pasó a pedir implícitamente un punto de referencia de Apache (la "A" en LAMP).
Roger Dahl el
5

Apache no es la mejor opción cuando se sirve contenido estático, nginx es más adecuado para eso. Hice un punto de referencia usando http://lekensteyn.nl/index.html como documento de prueba. Es un documento más grande que el ejemplo de Jiving ya que 19 bytes no son realistas para una página real. Los resultados son bastante sorprendentes, el RPi incluso supera a mi computadora portátil de trabajo (quizás porque tengo habilitados todo tipo de interruptores de depuración del núcleo).

Aquí está nginx 1.4.1 ejecutándose en Arch Linux (RPi, access_log offethernet con cable):

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

Esta es mi computadora portátil ( access_log offethernet con cable):

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, mi servidor remoto. Es más lento y la conexión WAN es el cuello de botella probable ( access_logtampoco está desactivado):

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 más concurrencia y un mayor conteo de solicitudes, los números deberían ser más confiables ya que se pueden incluir más muestras (cuando corrí abcontra mi computadora portátil en modo de cables / inalámbrico, sus números fluctuaron mucho). Tenga en cuenta que al realizar pruebas con registros de acceso, los búferes del sistema de archivos causan retrasos de escritura impredecibles cuando el directorio de registro está en la tarjeta SD.

Lekensteyn
fuente