Cómo leer una oferta barata de VPS sin equivocarse
Analiza una oferta barata de VPS: sobreventa de vCPU, ancho de banda ilimitado, NVMe, renovación, IPv4, copias de seguridad y una prueba de aceptación de 30 minutos.
Qué omite una oferta barata de VPS
Lea una oferta barata de VPS al revés, porque el precio es el dato menos útil de la página. Lo que determina si el servidor es adecuado aparece en la parte que el anuncio no muestra: la proporción de sobreventa detrás del número de vCPU, la cláusula de uso razonable detrás de la palabra "ilimitado", el precio de renovación después del primer período y si las copias de seguridad y la dirección IPv4 se facturan aparte. Esta guía analiza el anuncio línea por línea y después proporciona una prueba de aceptación que puede ejecutar en el servidor mientras aún puede solicitar un reembolso.
Esto no significa que un precio bajo sea un engaño. El hardware antiguo, una mayor densidad de máquinas, el soporte de autoservicio y una redundancia de plataforma más limitada hacen posible un precio bajo. Debe saber qué compromiso ha aceptado antes de que sus usuarios lo descubran por usted. Todo lo siguiente se ejecuta en Ubuntu 24.04 con los paquetes disponibles en agosto de 2026.
Una vCPU no es un núcleo
Una vCPU es un intervalo de planificación, no una pieza de silicio. En KVM (kernel-based virtual machine), cada vCPU es un hilo en el host, y el planificador del host coloca ese hilo en un núcleo físico cuando llega su turno. Un host puede vender cuatro vCPU sobre un solo núcleo físico, y cada guest seguirá mostrando el recuento completo en nproc. El número del anuncio es el límite máximo que puede solicitar, pero no indica qué recursos están reservados para usted.
La relación de sobreasignación indica cuántas vCPU vende un host por cada núcleo físico. Con una relación 1:1, el núcleo es exclusivamente suyo. Los planes económicos usan relaciones más altas, y casi nunca se publican. Por tanto, considere compartido cualquier anuncio que no indique "dedicated core" o "dedicated vCPU". Los recursos compartidos funcionan para la mayoría de las cargas, porque la mayoría de los servidores permanecen inactivos durante gran parte del tiempo. Dejan de ser suficientes cuando su hora de mayor actividad coincide con la hora de mayor actividad de los demás usuarios.
Puede medir el efecto desde el guest. Cuando su vCPU está lista para ejecutarse, pero el host asigna el núcleo físico a otro guest, esa espera se contabiliza como tiempo de steal: la columna st en vmstat y %st en top. El tiempo de steal muestra la actividad de un vecino ruidoso en sus propias métricas, y es el número más útil de esta guía, porque un anuncio no puede falsearlo.
Un núcleo dedicado también se comparte de otras formas. El ancho de banda de memoria, la caché de último nivel y la ruta de almacenamiento pertenecen a todo el host. "Dedicated vCPU" elimina la mayor fuente de variabilidad. No elimina toda la variabilidad.
Compruebe también el modelo de CPU con lscpu. Dos planes pueden indicar "4 vCPU" aunque su velocidad de ejecución de un solo hilo difiera por un factor de dos, porque uno de los hosts puede usar una generación de CPU varios años más antigua. Un silicio antiguo a bajo precio es una opción razonable para un agente de compilación y una mala opción para una página de pago.
«Ancho de banda ilimitado» corresponde, como mínimo, a cuatro productos distintos
El tráfico se describe de cuatro formas y no son intercambiables.
- Una cuota con medición. La oferta indica una cantidad, como «2 TB al mes» o similar. Lo importante es qué ocurre después: un cargo por cada TB adicional o una reducción de velocidad a un nivel muy bajo hasta que comience el mes siguiente. Averigüe cuál se aplica antes de necesitar esa información.
- Un plan sin medición con una cláusula de uso razonable. El tráfico no se cuenta y la política de uso aceptable establece el límite con palabras en lugar de cifras. Busque en ese documento «fair use», «sustained», «excessive» y «abuse».
- Un límite de velocidad del puerto. Un puerto de 100 Mbit/s limita la velocidad por sus características físicas, independientemente de lo que indique la política de tráfico.
- Una combinación de los dos últimos: tráfico sin medición en un puerto lento. Es la modalidad más habitual en los planes económicos y es una oferta clara siempre que lea la velocidad del puerto.
The data behind this chart
[
{
"label": "100 Mbit/s",
"tb_ceiling_30d": 32,
"hours_per_tb": 22.2
},
{
"label": "200 Mbit/s",
"tb_ceiling_30d": 65,
"hours_per_tb": 11.1
},
{
"label": "500 Mbit/s",
"tb_ceiling_30d": 162,
"hours_per_tb": 4.4
},
{
"label": "1 Gbit/s",
"tb_ceiling_30d": 324,
"hours_per_tb": 2.2
}
]La velocidad del puerto es un límite máximo fijo y el cálculo es sencillo. 100 Mbit/s equivalen a 12.5 megabytes por segundo, por lo que 30 días de ese puerto a velocidad máxima transfieren aproximadamente 32 TB. Los mismos 30 días en un puerto de 1 Gbit/s transfieren 324 TB. Aquí, TB significa 10^12 bytes, que es la unidad con la que facturan los proveedores. Esto es un cálculo, no una medición, y ningún servidor real mantiene el puerto al máximo durante un mes.
La segunda columna es la que cambia entre planes. Transferir un solo terabyte tarda aproximadamente 22.2 horas en el puerto de 100 Mbit/s y 2.2 horas en el puerto de gigabit. Si su plan de recuperación consiste en «descargar la copia de seguridad y volver a empezar», ese número es su tiempo de recuperación.
En esta línea de las especificaciones se ocultan otros dos detalles. «1 Gbit/s shared» significa que el puerto se comparte con otros clientes, por lo que el límite anterior es el mejor caso y no una garantía. Además, algunos proveedores facturan el tráfico según el percentil 95 de la velocidad medida, en lugar de hacerlo por el volumen total. En ese caso, una carga constante cuesta mucho menos que una carga con picos.
Independientemente de lo que indique el plan, mida su propio uso. vnstat lee los contadores de la interfaz y conserva un historial.
sudo apt install -y vnstat
sudo systemctl enable --now vnstat
vnstat -d
vnstat -mJusto después de la instalación, vnstat muestra Not enough data available yet. porque su base de datos aún no tiene muestras. Vuelva al día siguiente y vnstat -m le dará un total mensual que podrá comparar con la cuota contratada.
¿La afirmación sobre NVMe es real y se puede comprobar?
lsblk -d -o NAME,ROTA,SIZE,MODELROTA con valor 0 indica que se informó al guest de que el dispositivo no es rotacional. Ese valor procede del hipervisor, por lo que describe lo que anuncia el host y no el medio de almacenamiento subyacente. La columna MODEL suele estar vacía para un disco virtio como /dev/vda y muestra un QEMU HARDDISK genérico para uno conectado mediante SCSI. Está observando un disco virtual, por lo que su etiqueta no demuestra nada.
La propiedad que conviene comprobar es la latencia, y la diferencia real está entre NVMe local y un volumen conectado por red. Un volumen de red puede mostrar una cifra alta de rendimiento secuencial y seguir respondiendo despacio, porque el rendimiento se mide con muchas solicitudes simultáneas, mientras que una base de datos espera una escritura pequeña cada vez. Mida con una profundidad de cola de 1 para obtener la latencia y después con una cola más profunda para medir IOPS (operaciones de entrada/salida por segundo).
sudo apt install -y fio
fio --name=lat --filename=fiotest --size=1G --direct=1 --ioengine=libaio --rw=randread --bs=4k --iodepth=1 --numjobs=1 --runtime=60 --time_based --group_reporting
fio --name=iops --filename=fiotest --size=1G --direct=1 --ioengine=libaio --rw=randread --bs=4k --iodepth=32 --numjobs=1 --runtime=60 --time_based --group_reporting
rm -f fiotestLea el bloque clat percentiles, concretamente la línea del percentil 99.00. Esa es la latencia de finalización que experimentó el 1 por ciento más lento de las solicitudes, y es lo que el usuario percibe como una pausa. Como referencia aproximada, un NVMe local con una profundidad de cola de 1 responde en cientos de microsegundos, mientras que un volumen conectado por red responde en milisegundos. Compare sus dos ejecuciones en lugar de confiar en una única cifra publicada y ejecute el par tres veces a lo largo del día, porque un disco compartido con otros tenants se comporta de forma distinta a las 03:00 y a las 20:00.
fio crea primero el archivo de 1 GB, así que deje espacio disponible en el disco y recuerde que la prueba consume cualquier límite de IOPS que aplique el plan. Si sólo quiere una lectura rápida, ioping -c 20 . muestra la latencia en una línea. Un benchmark sólo sirve si se puede repetir, así que guarde las líneas de comando exactas y la salida con la fecha.
Qué incluye y qué se factura aparte
- IPv4. Normalmente se incluye una dirección. Algunos planes económicos asignan una dirección compartida detrás de NAT (traducción de direcciones de red), con algunos puertos redirigidos. Esto significa que no puede ejecutar nada en el puerto 443 propio. Compruébelo con
ip -4 addr show scope globalycurl -4 https://icanhazip.com. Si obtiene dos respuestas diferentes, está detrás de NAT. - IPv6. Un /64 enrutado proporciona direcciones para contenedores y para cualquier servicio que quiera hacer accesible desde el exterior. Un único /128 permite el tráfico saliente, pero poco más.
- Copias de seguridad. Las copias de seguridad automáticas suelen ser un complemento de pago. Las instantáneas suelen ser gratuitas, pero una instantánea reside en la misma infraestructura que el disco del que se copia. Por tanto, protege frente a sus propios errores, pero no frente a la pérdida del host. Mantenga una copia fuera del servidor, independientemente de lo que incluya el plan.
- Protección frente a DDoS. Muchos proveedores responden a un ataque volumétrico de denegación de servicio distribuido anulando el enrutamiento de su dirección IP durante un periodo fijo. El servidor sigue funcionando. Simplemente deja de ser accesible desde Internet. Pregunte cuál es el umbral que activa esta medida y cuánto dura la ruta nula.
- Alcance del soporte. En un plan no administrado, usted es el administrador del sistema, y la responsabilidad del proveedor termina en el hipervisor y la red. Esta es la mayor diferencia de coste real entre dos planes con especificaciones idénticas.
- Licencias y paneles. Un panel de control, un sistema operativo comercial o un complemento de correo pueden costar más al mes que el propio servidor.
¿Qué tipo de virtualización está contratando?
systemd-detect-virtkvm o qemu significa virtualización completa: su propio kernel y los módulos que elija cargar en él. lxc, lxc-libvirt o openvz significa un contenedor que comparte el kernel del host. none significa bare metal.
La diferencia es importante cuando se comparte el kernel. sudo modprobe wireguard falla y ip link add dev wg0 type wireguard devuelve RTNETLINK answers: Operation not supported porque un contenedor no puede cargar un módulo del kernel que el host no haya cargado. free -h puede mostrar la memoria del host en lugar de la suya si falta lxcfs, por lo que la monitorización lee valores que no corresponden a su servidor. La swap suele compartirse con otros contenedores y ejecutar máquinas virtuales dentro de su VPS no es posible en absoluto. Los planes de contenedor son más baratos por un motivo y, para un sitio estático o una aplicación pequeña, siguen siendo la opción adecuada.
¿Cuál es el precio de renovación?
El precio anunciado suele cubrir sólo el primer período. Busque la expresión "renews at" en la página del pedido y compruebe la duración del período a la que se aplica el descuento. Un descuento que dura un año y otro garantizado durante toda la vigencia del plan son productos distintos, aunque aparezcan en la misma primera factura.
Lea las condiciones de reembolso con la misma atención. Compruebe cuánto dura el plazo de devolución, si empieza al hacer el pedido o al aprovisionar el servicio, si los complementos, como las direcciones IP adicionales, se pueden reembolsar y si el prepago anual se devuelve de forma proporcional. Después, programe un recordatorio en el calendario para una semana antes de la fecha de renovación, porque el momento más barato para cancelar es antes de que se emita la factura.
Cambiar de proveedor más adelante tampoco es gratis. Mover varios cientos de gigabytes de datos, reconstruir la configuración, esperar a que transcurran los valores de tiempo de vida de DNS (domain name system) y, en el caso de un servidor de correo, reconstruir la reputación de la IP puede ocupar todo un fin de semana. Incluya ese fin de semana en el cálculo cuando el ahorro parezca convincente. El coste real de un VPS durante un año es la cifra que debe comparar, no la del primer mes.
La prueba de aceptación de treinta minutos
Ejecute esta prueba en el nuevo servidor antes de migrar nada y mientras el plazo de reembolso siga abierto. Protéjalo primero: los primeros diez minutos en un VPS nuevo cubren la cuenta de usuario, las claves y el firewall. Después, instale las herramientas.
sudo apt update
sudo apt install -y sysbench fio ioping sysstat stress-ng vnstat mtr-tiny curlComprobación 1: ¿qué me han asignado realmente?
systemd-detect-virt
nproc
lscpu | grep -E 'Model name|MHz|Hypervisor'
free -h
lsblk -d -o NAME,ROTA,SIZE,MODEL
ip -4 addr show scope global
curl -4 -s https://icanhazip.comDebería ver el tipo de virtualización, un modelo de CPU y una cantidad de memoria que estén dentro de unos pocos puntos porcentuales de lo contratado. Que free -h informe de mucha más RAM de la que ofrece el plan indica que es un contenedor sin lxcfs, no una ventaja adicional. Una dirección pública de curl que nunca aparece en ip -4 addr significa que la dirección IPv4 es compartida.
Comprobación 2: ¿qué velocidad tiene un hilo y cuánto steal hay bajo carga?
sysbench cpu --cpu-max-prime=20000 --threads=1 runRegistre la línea events per second. La velocidad de un solo hilo determina cuánto tarda en renderizarse una página y cuánto dura una compilación. Es el valor en el que más difieren los planes económicos. Ahora cargue todas las vCPU y observe lo que el planificador le asigna realmente.
stress-ng --cpu 0 --timeout 300s &
vmstat 1 30
mpstat -P ALL 1 10--cpu 0 inicia un worker por cada CPU en línea. Observe la columna st en vmstat y %steal en mpstat. Valores ocasionales de un solo dígito en un plan compartido son normales. Un valor de steal de dos dígitos durante varios minutos significa que los núcleos físicos están sobresuscritos. Su trabajo queda en cola detrás del de otro cliente. Ejecute sysbench de nuevo mientras la carga esté activa. Si la puntuación de un solo hilo se desploma, las vCPU compiten entre sí. Esto suele indicar que son hilos hermanos de un mismo núcleo y no núcleos separados. Una puntuación baja con un valor de steal cercano a cero corresponde al otro caso: el host aplica un límite de CPU. No puede ver este límite directamente desde el guest.
Comprobación 3: ¿cómo se comporta el disco con una profundidad de cola de 1?
Ejecute los dos comandos de fio de la sección de NVMe y conserve ambos resultados: la latencia del percentil 99 con una profundidad de cola de 1 y los IOPS con una profundidad de 32. Compruebe también las escrituras, porque muchos volúmenes son mucho más lentos en esa dirección.
fio --name=wlat --filename=fiotest --size=1G --direct=1 --ioengine=libaio --rw=randwrite --bs=4k --iodepth=1 --numjobs=1 --runtime=30 --time_based --group_reporting
rm -f fiotestUna cifra secuencial de dd es el valor que más suelen citar los anuncios y el menos útil que puede recopilar. La transmisión secuencial no es lo que ocupa la mayor parte del tiempo de una base de datos o una aplicación web con mucha carga. Recójala si quiere comparar. Tome la decisión basándose en la latencia.
Comprobación 4: ¿cómo se ve la red desde la ubicación de sus usuarios?
Primero, descargue un archivo grande en el VPS.
curl -o /dev/null -w 'in: %{speed_download} bytes/s\n' https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xzEsto prueba una sola ruta hacia su servidor y nada más. La dirección importante es la que utilizan sus usuarios. Por tanto, sirva un archivo y descárguelo desde una máquina cercana a ellos.
fallocate -l 100M /var/tmp/100mb.bin
python3 -m http.server 8080 --directory /var/tmpDespués, desde un portátil o un servidor cercano a su audiencia:
curl -o /dev/null -w 'down: %{speed_download} bytes/s\n' http://YOUR_SERVER_IP:8080/100mb.bin
mtr --report --report-cycles 50 YOUR_SERVER_IPEl puerto 8080 debe estar abierto en el firewall durante esta prueba. Después, ciérrelo y elimine el archivo. Detenga también el servidor de Python con Ctrl+C. En la salida de mtr, lea la columna de pérdida de la línea final. La pérdida en un salto intermedio, sin pérdida en el destino, es normal. Los routers responden a las solicitudes ICMP (internet control message protocol) que cuenta mtr con una prioridad baja. Esto no representa pérdida en su tráfico. La pérdida en la última línea es real.
Repita la prueba de red durante la hora de máxima actividad de sus usuarios. Una sola muestra a las 02:00 sólo informa sobre una red con poco tráfico.
Guarde los cuatro resultados en un archivo junto con la fecha y vuelva a ejecutarlos dentro de un mes. Un plan que funcionaba bien el primer día y era lento en la sexta semana indica que el host se saturó. Disponer de los valores del primer día permite confirmarlo en lugar de tener que adivinarlo.
Cuándo conviene elegir un VPS barato
Un precio bajo ofrece ventajas reales y tiene costes reales. Los procesadores más antiguos, una mayor tasa de sobreasignación, un almacenamiento de red más lento, el soporte basado en autoservicio y una redundancia más limitada son los factores que reducen el precio. Adáptelos al trabajo que debe realizar el servidor.
Un VPS barato es adecuado para un equipo de desarrollo, un ejecutor de CI, un endpoint VPN, un nodo de monitorización, un destino de copias de seguridad o un sitio estático. Todos pueden tolerar un minuto lento. Un VPS barato es una mala elección cuando la latencia forma parte del producto: una página de pago, una API interactiva, un servidor de juegos o una base de datos de la que depende otro servicio. La prueba anterior le indica qué ha comprado y se lo indica cuando la respuesta todavía no tiene ningún coste.
FAQ
¿Qué significa vCPU en una oferta de VPS económico?
Una vCPU es un procesador virtual que se presenta a su sistema invitado y se asigna a un hilo que el planificador del host ejecuta en un núcleo físico cuando es posible. Es una asignación de tiempo de CPU, no hardware reservado, salvo que la oferta indique "dedicated core" o "dedicated vCPU". Los hosts venden más vCPU de las que tienen núcleos, y esa proporción rara vez se publica, así que debe medirla. Ejecute stress-ng --cpu 0 --timeout 300s y observe la columna st en vmstat 1. Un porcentaje de steal de dos dígitos significa que está esperando núcleos que utilizan otros invitados.
¿"Unlimited bandwidth" significa realmente ilimitado?
No. El límite suele estar definido en dos lugares fuera de la descripción del plan. La política de uso aceptable establece un límite de uso razonable por escrito, y la velocidad del puerto fija un máximo absoluto en bytes. Un puerto de 100 Mbit/s no puede transferir más de aproximadamente 32 TB en 30 días, ni siquiera a velocidad máxima. Por tanto, pregunte cuál es la velocidad del puerto y busque en la política las expresiones "fair use" y "sustained". Después, registre lo que realmente envía con vnstat -m y compárelo con la asignación.
¿Cómo puedo saber si mi VPS usa realmente NVMe?
No puede confirmar el medio físico desde un sistema invitado, porque lsblk sólo informa de lo que anuncia el hipervisor: ROTA de 0 y una cadena de modelo vacía o genérica. Lo que sí puede medir es el comportamiento. Ejecute fio con --direct=1 en --iodepth=1 y consulte la latencia de finalización del percentil 99.00. Un NVMe local responde en cientos de microsegundos, mientras que un volumen conectado por red responde en milisegundos, incluso cuando su rendimiento secuencial parece impresionante. Repita la prueba varias veces durante el día, porque un disco compartido no ofrece el mismo rendimiento a las 03:00 que a las 20:00.
¿Qué debo probar antes de que termine el periodo de reembolso?
Cuatro cosas, en este orden. Qué es realmente el servidor, mediante systemd-detect-virt, lscpu y free -h. La velocidad de un solo hilo, mediante sysbench cpu --cpu-max-prime=20000 --threads=1 run. El tiempo de steal con carga completa, mediante stress-ng --cpu 0 observado con vmstat 1. La latencia del disco, mediante fio con una profundidad de cola de 1. Después, mida la red desde un equipo cercano a sus usuarios con mtr y descargue un archivo que sirva desde el servidor. Treinta minutos bastan para cubrirlo todo. Hacerlo antes de migrar cualquier servicio mantiene el periodo de reembolso como margen de negociación.