🐧 Cuando crees que sabes de Linux, pero en realidad no sabes nada...
rolando.vazquez.23@gmail.com
Ruby on Rails
Ruby
Linux
Llevas años en esto. Tiras código limpio, diseñas nubes privadas, te sabes los comandos de Docker de memoria y te mueves por la terminal como pez en el agua. Te sientes un hacker.
Un día decides hacer un simple deploy de tu nueva app en Rails 8 usando Kamal 2. Todo parece de rutina. Ejecutas kamal deploy, te cruzas de brazos a esperar la magia y ¡pum!... Error: target failed to become healthy within configured timeout (30s).
image.png2.42 MB
Ahí es cuando te pones la bata de forense:
🕵️♂️ Paso 1: El diagnóstico avanzado. Lees los logs y ves un connection refused. "Ah, claro", dices ajustando tus lentes invisibles. "Es el clásico choque de red. Thruster está buscando a Puma en IPv6 y Puma solo escucha en IPv4". Ajustas el TARGET_HOST: 127.0.0.1. Te sientes invencible.
🔐 Paso 2: La criptografía. Lanzas el deploy de nuevo y vuelve a fallar. Ahora es un Missing secret_key_base. Te ríes, generas tu master.key, configuras tus secretos y empujas las variables de entorno. El teclado saca humo de lo rápido que tecleas.
🔥 Paso 3: El colapso. Vuelves a entrar al servidor porque el deploy se siente lentísimo. Abres el glorioso htop esperando ver la matrix... y ves todo en rojo. Los procesos están trabados en estado "D" (Uninterruptible Sleep). El procesador está a tope. Empiezas a culpar al balanceador de carga, a la arquitectura, a la alineación de los planetas. Estás a punto de reescribir todo el stack.
Hasta que bajas la mirada de tu ego y lees la esquinita superior izquierda: Swp[ 0K/0K]
Tu flamante servidor VPS se estaba asfixiando. No era un problema complejo de red, ni un bug oscuro de Docker, ni Kamal. Era tu servidor rogando por un poco de memoria Swap porque su RAM estaba saturada y el sistema operativo estaba convulsionando tratando de escribir en el disco.
Un simple fallocate de 2GB, un ajuste de vm.swappiness=10 para que el sistema priorice la RAM física, lo guardas en el /etc/fstab... y como por arte de magia, la paz regresa. Los procesos respiran, el CPU se relaja y tu app por fin está en línea.
Moraleja: No importa cuánta experiencia tengas o qué tan pro seas levantando infraestructuras complejas; a veces la solución a todos tus problemas arquitectónicos es simplemente acordarte de prender la Swap. 😅💻
Comments
0