Solución Práctica a Desconexiones de VSCode SSH en Servidores con Poca RAM

Índice

✅ Introducción

Aunque los artículos sobre IA y GPUs de alto rendimiento están por todas partes en estos días, muchos usuarios en realidad trabajan con entornos de bajas especificaciones como servidores Ubuntu de nivel gratuitoe2-micro (GCP) y el nivel gratuito de Oracle Cloud.

Soy uno de ellos. Cuando trabajaba con una conexión SSH de VSCode, se desconectaba repentinamente en medio de una sesión. A veces, el código en el que estaba trabajando se perdía, y tuve experiencias en las que me vi forzado a volver a usar TeraTerm.

🧪 Especificaciones y Problemas Actuales de la Máquina

Aquí están las especificaciones de la instancia de Ubuntu que estoy usando:

$ free
              total        used        free      shared  buff/cache   available
Mem:          979708      526436       98036        1556      536932      453272
Swap:              0           0           0
  • Aproximadamente 1GB de memoria
  • Sin Swap configurado
  • VSCode se desconecta durante sesiones largas

En este estado, simplemente ejecutar un proceso un poco pesado puede desencadenar un error “Out of Memory (OOM)”, lo que hace que la conexión de VSCode se agote y se desconecte.

🛠 Solución: Introduciendo un Archivo de Intercambio (Swap)

Al configurar un archivo de intercambio (Swap), se crea un refugio de emergencia para cuando la memoria física se agota. Aquí están los pasos:

1. Crear un archivo de intercambio (por ejemplo, 1GB)

sudo fallocate -l 1G /swapfile

O, para una mejor compatibilidad:

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024

Salida:

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 17.8276 s, 60.2 MB/s

2. Establecer permisos

sudo chmod 600 /swapfile

3. Inicializar y habilitar

sudo mkswap /swapfile
sudo swapon /swapfile

Salida:

sudo mkswap /swapfile
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=ea117786-54d3-4317-b575-130df8e58c5b

4. Hacerlo persistente (habilitar después de reiniciar)

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Salida:

/swapfile none swap sw 0 0

5. Verificar si hay líneas duplicadas en /etc/fstab

cat /etc/fstab

Asegúrese de que una línea como la siguiente no esté escrita más de una vez:

/swapfile none swap sw 0 0

❌ Ejemplo Incorrecto (Lo que yo tenía):

/swapfile none swap sw 0 0
/swapfile none swap sw 0 0

✅ Ejemplo Correcto:

/swapfile none swap sw 0 0

🔧 Cómo arreglar duplicados:

Abra el archivo con:

sudo nano /etc/fstab

o

sudo vi /etc/fstab

Luego, elimine una de las líneas duplicadas y guarde el archivo.

💡 ¿Por qué es esto importante?

  • Tener líneas duplicadas en fstab puede causar errores de duplicación del área de intercambio o fallos de montaje durante el arranque.
  • Esto es especialmente cierto para las instancias basadas en cloud-init (por ejemplo, GCP/Oracle) donde el proceso de arranque es sensible.

🔍 ¿Qué pasó después?

Mi conexión SSH de VSCode se volvió extremadamente estable, y pude volver a mi flujo de trabajo de desarrollo normal. Es especialmente perfecto para tareas en las que no necesitas recursos de nivel de IA, sino que solo quieres escribir algunos scripts simples de Python.

💬 Resumen

Las desconexiones de VSCode no solo son causadas por conexiones inestables; también pueden estar relacionadas con la memoria insuficiente en el lado del servidor.

Incluso en e2-micro o en el nivel gratuito de Oracle Cloud, puedes crear un entorno de desarrollo suficientemente cómodo configurando un archivo de intercambio. “Una mejora dramática con un pequeño ajuste”—este tipo de mejora práctica debería ser más valiosa que nunca en los tiempos venideros.

Swap File Creation Guide

🔧 Swap File Creation Guide

Solution for VS Code Remote-SSH Disconnection Issues
⚠️ Current Situation: 1GB RAM Environment
1GB
Total Memory
0MB
Swap Space
500MB+
VS Code Required
💥
OOM Killer Triggered
💡 Solution: Create Swap File
Supplement physical memory with disk space when needed

📋 Swap File Creation Steps

1
Create Swap File
Create a 1GB swap file rapidly. Using the fallocate command allows instant disk space allocation.
sudo fallocate -l 1G /swapfile
fallocate: Instantly allocates disk space
-l 1G: Specifies 1GB size
/swapfile: Path to the swap file
2
Set File Permissions
For security reasons, restrict access to the swap file so that only root can read and write to it.
sudo chmod 600 /swapfile
chmod 600: Only owner (root) can read/write
Swap files may contain sensitive information, so this is essential
3
Initialize as Swap Space
Format the created file so that Linux can recognize it as swap space.
sudo mkswap /swapfile
mkswap: Formats file as swap space
At this point, it’s not yet active as swap
4
Enable Swap
Activate the formatted swap file as actual system swap space.
sudo swapon /swapfile
swapon: Enables swap space
From this moment, the system starts using swap
🔄 Make Persistent After Reboot
Add the following line to /etc/fstab file:
/swapfile none swap sw 0 0
📝 Edit command example: sudo nano /etc/fstab
Performance Considerations
SSD environments: Swap usage has minimal performance impact
HDD environments: Consider using zram (RAM compression) for better performance
Recommendation: Even a small swap is better than none – prevents sudden application termination
Verify Swap Creation
free -h
swapon –show
cat /proc/meminfo | grep Swap
Success if you see: Swap: 1.0G
🎉 VS Code Remote-SSH Now Runs Stable!
Free from sudden disconnections caused by OOM Killer
Your free-tier VPS is now ready for serious development work

🧩 Bonus: Primeros Auxilios para Desconexiones de VSCode

  • Cierra y vuelve a abrir la sesión SSH de VSCode.
  • Si es necesario, elimina el directorio .vscode-server y deja que se reconstruya.
  • Para tareas de larga duración, también es muy recomendable usar screen o tmux.

💡 Información Extraordinariamente Útil sobre Google Cloud e2-micro

La instancia e2-micro de Google Cloud es parte del Nivel Gratuito de Google Cloud, lo que te permite usar ciertos productos sin costo, dentro de límites de uso mensuales específicos. Aquí tienes algunos consejos clave para aprovecharlo al máximo:

  • Una Instancia VM e2-micro Gratuita: Obtienes una instancia de VM e2-micro no interrumpible por mes. El límite se basa en el tiempo de actividad total del mes (por ejemplo, 744 horas en un mes de 31 días). Puedes ejecutar varias instancias e2-micro, pero su tiempo de actividad combinado no debe exceder este límite para seguir siendo gratuito.
  • Regiones Soportadas: La instancia e2-micro gratuita solo está disponible en regiones específicas de EE. UU.: Oregón (us-west1), Iowa (us-central1) y Carolina del Sur (us-east1). Es crucial que crees tu instancia en una de estas regiones.
  • Especificaciones: Una VM e2-micro ofrece 0.25 vCPU (que puede aumentar a 2 vCPU periódicamente) y 1 GB de RAM. Es ideal para aplicaciones pequeñas y de bajo tráfico.
  • Almacenamiento: El nivel gratuito incluye 30 GB-mes de disco persistente estándar. Ten cuidado de no exceder este límite para evitar cargos.
  • Sistema Operativo: Elige siempre un sistema operativo gratuito como Debian, Ubuntu u otras distribuciones de Linux para evitar costos de licencia.
  • Tráfico de Red: Tienes 1 GB de salida de red gratuita por mes desde Norteamérica a todos los destinos de regiones (excluyendo China y Australia). Ten en cuenta tu transferencia de datos de salida, ya que exceder este límite generará cargos.
  • Monitoriza tu Uso: Revisa regularmente tu informe de facturación para asegurarte de que te mantienes dentro de los límites del nivel gratuito y evitar cargos inesperados. Google Cloud no corta automáticamente la facturación si excedes los límites.
  • Diferencia entre Nivel Gratuito y Prueba Gratuita: El Nivel Gratuito es una oferta “siempre gratuita” con límites específicos, mientras que la Prueba Gratuita te da $300 de crédito por 90 días para explorar todos los servicios de Google Cloud.

Aprovechar estos consejos te ayudará a mantener tus costos bajos mientras utilizas esta útil oferta de nube gratuita.

If you like this article, please
Follow !

¡Comparte esta publicación!
Índice