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:
- Los micros, a pesar de ser x86 64bit, son de una arquitectura antigua, mucho más lenta que los micros actuales.
- 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.
Interesante análisis … ya estoy con “mono” de los próximos artículos de la serie :)
Daniel, me alegra oírlo. Espero no defraudar la expectativa y que te resulte útil.
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.
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