juanjonavarro.com

secciones

Rendimiento de un VPS en Scaleway

Scaleway es una empresa de hosting francesa (creo que filial de online.net) de la que se oyó hablar hace unos meses porque ofrecen servidores reales (no virtuales) con microprocesador ARM. Básicamente son pequeños ordenadores (equivalentes a un Raspberry Pi) con 2GB de RAM por 2,99€ al mes (más impuestos). Estuve probando uno hace un tiempo (permiten usarlos por horas) pero decidí no usarlo para el hosting de mi web. Me echó para atrás el poco rendimiento de un chip ARM (aunque sean 4 cores) y sobre todo porque a nivel de software te obliga a instalar versiones especiales de todo (SO, aplicaciones) compiladas para micro ARM (o compilarlas tú mismo).

Un tiempo después sacaron servidores VPS más clásicos, virtualizados sobre micros x86 64bit. El más pequeño de ellos (también 2,99€ más impuestos) ofrece 2GB de RAM al mismo precio que DigitalOcean ofrece sólo 512Mb.

Buscando información sobre el rendimiento de estos VPS en Internet los resultados no son muy buenos, principalmente por dos razones:

  1. Los micros, a pesar de ser x86 64bit, son de una arquitectura antigua, mucho más lenta que los micros actuales.
  2. Los discos duros, aunque son SSD, están montados sobre un interface de red, no directamente.

La teoría es que a igualdad de recursos un VPS de DigitalOcean o Linode tendrá mucho mejor rendimiento, pero el precio de un VPS de 2GB en DigitalOcean cuadruplica el de Scaleway. Podría contratar un VPS con menos memoria, pero creo que para un hosting es más importante la cantidad de memoria que la velocidad del micro, y 2Gb es la cantidad de memoria mínima para no tener que estar configurado de modo especial apache, etc.

En cualquier caso, como una cosa es la teoría y otra la práctica, he hecho una pequeña prueba de carga. He instalado un Textpattern (mi gestor de contenidos favorito) sobre Docker. He utilizado un contenedor para apache y otro para la bbdd mysql. Estos son los tiempos de acceso a la página de inicio utilizando la herramienta ab de apache, 100 peticiones con 10 peticiones concurrentes, en el VPS de Scaleway:

Concurrency Level:      10
Time taken for tests:   5.955 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      2718734 bytes
HTML transferred:       2699134 bytes
Requests per second:    16.79 [#/sec] (mean)
Time per request:       595.534 [ms] (mean)
Time per request:       59.553 [ms] (mean, across all concurrent requests)
Transfer rate:          445.82 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       38   43   3.6     43      61
Processing:   335  520  77.2    529     698
Waiting:      248  476  78.2    481     632
Total:        380  563  77.2    573     743

Percentage of the requests served within a certain time (ms)
  50%    573
  66%    588
  75%    614
  80%    625
  90%    664
  95%    687
  98%    715
  99%    743
 100%    743 (longest request)

Y ahora en DigitalOcean, con un VPS también de 2Gb, desplegando los mismos dos contenedores Docker:

Concurrency Level:      10
Time taken for tests:   5.508 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      2718610 bytes
HTML transferred:       2699010 bytes
Requests per second:    18.15 [#/sec] (mean)
Time per request:       550.831 [ms] (mean)
Time per request:       55.083 [ms] (mean, across all concurrent requests)
Transfer rate:          481.98 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       44   51   6.4     50      82
Processing:   202  458  71.1    464     583
Waiting:      101  301 106.8    292     512
Total:        254  510  70.7    519     630

Percentage of the requests served within a certain time (ms)
  50%    519
  66%    535
  75%    553
  80%    560
  90%    577
  95%    604
  98%    627
  99%    630
 100%    630 (longest request)

Como se puede ver, los rendimientos son muy parecidos (la media en Scaleway es 573ms frente a 519ms en DigitalOcean). Un 10% mejores en DigitalOcean en esta prueba, pero recordemos que su precio se cuadruplica. Esto además es con el VPS de 2Gb de DigitalOcean (que tiene dos cores). Si utilizamos el VPS de 512Mb o 1Gb (que sólo tienen un core) los tiempos en DigitalOcean son mucho peores. Esto es lógico, dado el nivel de concurrencia los tiempos entre ambos sólo se mantienen cuando hacemos una sola petición concurrente.

Por cierto, esta prueba con Docker me ha permitido ver la ventaja de usarlo para la infraestructura: Una vez montado todo en el primer VPS, llevarlo al segundo simplemente fue hacer copia de los contenedores (con sus volúmenes) y copiarlos a DigitalOcean. Hacer un docker-compose up -d y automáticamente tener una copia exacta funcionando.

4 Comentarios
Daniel
Daniel
16 marzo 2017, 14:55 — #1

Interesante análisis … ya estoy con “mono” de los próximos artículos de la serie :)

Juanjo Navarro
17 marzo 2017, 01:02 — #2

Daniel, me alegra oírlo. Espero no defraudar la expectativa y que te resulte útil.

Martín
2 abril 2017, 07:31 — #3

Muy interesante Juanjo. Me he pasado recientemente de dinahosting a digital ocean, pero sin el empleo de dockers. Ahora vuelvo a estar en la duda.

Juanjo Navarro
2 abril 2017, 21:39 — #4

Martin, en realidad el software que finalmente se monta en Docker es el mismo que ya estás usando: Apache, mysql, etc.

La diferencia es que en lugar de instalarlo desde los repositorios de tu distribución, lo montas en uno (o varios) contenedores docker. Lo que yo veo que gano es facilidad de migración futura, puesto que en el contenedor (y sus volúmenes asociados) tengo no solo el software base sino mis configuraciones, ficheros, etc.

Comentarios cerrados para este artículo

Anterior: Montando tu servidor en un VPS con Docker: Introducción Siguiente: Acceso a servicios locales en un VPS