El mayor portal de MU Online de Brasil — desde 2003
Tutorial Avanzado Servidor

Guía Completa de Mantenimiento de Servidor MU Online

Aprende a mantener un servidor de MU Online con protocolos de reinicio, gestión de base de datos, monitoreo de procesos y diagnóstico de errores en producción.

EQ Equipo ViciadosMU · Actualizado el 4 jul 2026 · ⏱ 18 min de lectura

Arquitectura del Servidor y Procesos Interdependientes

El mantenimiento efectivo de un servidor de MU Online comienza por comprender qué procesos están corriendo y cómo se relacionan entre sí. Un servidor funcional no es un único ejecutable sino un conjunto de componentes que deben operar en sincronía.

El ConnectServer es el punto de entrada de todos los clientes. Recibe la conexión inicial, valida la versión del cliente y redirige al jugador al GameServer con menor carga. Si este proceso falla, nadie puede ingresar al servidor aunque el GameServer esté perfectamente operativo.

El GameServer es el núcleo del sistema. Procesa la lógica de juego en tiempo real: movimiento de personajes, combate, caída de ítems, spawn de monstruos, temporizadores de eventos y validación de interacciones con NPCs. Mantiene los datos de los personajes activos en memoria y los escribe en la base de datos en intervalos configurables, además de en cada logout y en el shutdown controlado.

El SQL Server (o la instancia de base de datos equivalente) persiste todo el estado permanente: personajes, inventarios, almacenes, guildas, historial de eventos y registros de transacciones. La salud de la base de datos es el factor más crítico para la integridad de los datos del jugador.

Nota: En instalaciones con múltiples GameServers, cada instancia tiene su propia conexión a la base de datos pero comparte las mismas tablas de personajes. El ConnectServer debe estar configurado con los pesos de carga correctos para distribuir jugadores de forma equilibrada. Un error de configuración en los pesos puede saturar un GameServer mientras otro opera casi vacío, generando lag asimétrico que es difícil de diagnosticar sin métricas por instancia.

Protocolo de Mantenimiento Programado

El mantenimiento programado debe seguir una secuencia estricta. El orden de los pasos no es arbitrario: cada uno depende del estado dejado por el anterior.

Secuencia de Mantenimiento Programado
──────────────────────────────────────────────────────────────────
Paso  1 → Aviso en chat global (30 min antes)    → jugadores se preparan
Paso  2 → Aviso final en chat global (5 min)     → salir de eventos activos
Paso  3 → Bloquear nuevos logins (ConnectServer) → sin conexiones entrantes
Paso  4 → Flush de datos al SQL Server           → personajes guardados
Paso  5 → Shutdown controlado del GameServer     → proceso terminado limpio
Paso  6 → Backup de la base de datos             → snapshot pre-cambios
Paso  7 → Aplicar parches de configuración       → ajustes de balance/rates
Paso  8 → Verificar integridad de tablas SQL     → DBCC CHECKDB o equivalente
Paso  9 → Arranque del GameServer                → inicio limpio de procesos
Paso 10 → Verificación post-arranque             → logs, spawn de monstruos
Paso 11 → Habilitar conexiones en ConnectServer  → login disponible
Paso 12 → Anuncio de servidor disponible         → comunicación al jugador
──────────────────────────────────────────────────────────────────

El paso de flush (paso 4) es el más crítico de la secuencia. El GameServer mantiene en memoria el estado de todos los personajes conectados. Si el proceso se termina sin ejecutar el flush, la última escritura exitosa en la base de datos puede haber ocurrido varios minutos antes, generando pérdida de experiencia, ítems obtenidos por drop y progreso de misiones. Esta es la causa número uno de reclamos de rollback.

> [!ATENCION] > Nunca termines el proceso GameServer.exe mediante "Finalizar tarea" en el Administrador de tareas o con kill -9 en Linux sin antes confirmar que el flush se ejecutó correctamente. Si el servidor ya no responde a comandos y debes forzar el cierre, asume que habrá rollback en los últimos minutos de juego y comunícalo a los jugadores antes de reabrir. La transparencia en estos casos construye confianza a largo plazo.

Gestión de la Base de Datos SQL

La base de datos es el componente más delicado del servidor y el que requiere mayor atención durante el mantenimiento. Hay tres operaciones fundamentales que todo administrador debe dominar.

Backup regular. Un backup antes de cada mantenimiento no es opcional si valoras la integridad de los datos. El backup debe ser un snapshot completo de la base, almacenado en una ubicación diferente al disco donde opera el SQL Server. Un backup en el mismo disco que la base no protege contra fallos de disco.

Verificación de integridad. En SQL Server, el comando DBCC CHECKDB analiza la consistencia interna de las tablas y reporta páginas corruptas antes de que se conviertan en pérdida de datos. Esta verificación debe ejecutarse al menos una vez por semana, idealmente durante la ventana de mantenimiento cuando el GameServer está detenido y no hay escrituras activas en la base.

Optimización de tablas. Las tablas de personajes y de ítems crecen con el tiempo y acumulan fragmentación de índices, lo que degrada el rendimiento de las consultas. La operación de reconstrucción de índices (ALTER INDEX ALL ON tabla REBUILD) es una tarea de mantenimiento mensual que puede mejorar notablemente los tiempos de guardado de personaje y de búsqueda de ítems en el almacén.

> [!CONSEJO] > Configura el SQL Server Agent para ejecutar backups automáticos diarios con retención de siete días. Esto te da una ventana de recuperación de una semana ante cualquier error humano o corrupción de datos. Mantén al menos un backup semanal adicional fuera del servidor principal — en un disco externo o en almacenamiento en red — para protegerte contra fallos de hardware graves.

Monitoreo de Procesos y Diagnóstico de Errores

Un servidor bien administrado no reacciona a los problemas: los anticipa. El monitoreo proactivo consiste en registrar métricas clave y establecer umbrales de alerta antes de que los síntomas se vuelvan perceptibles para los jugadores.

Uso de memoria del GameServer. El proceso debe crecer de forma proporcional a la concurrencia y estabilizarse cuando la carga es constante. Si el uso de memoria aumenta continuamente durante horas sin estabilizarse, hay una fuga de memoria. Las causas más comunes son scripts de eventos customizados con bucles sin límite de duración y consultas que abren conexiones SQL sin cerrarlas.

Tiempo de respuesta de la base de datos. Las consultas lentas afectan directamente la experiencia del jugador. Un guardado de personaje que normalmente tarda 20 milisegundos y de repente tarda 2 segundos es señal de que las tablas necesitan mantenimiento de índices o que hay una consulta bloqueante en ejecución. Activa el registro de consultas lentas en SQL Server y revísalo semanalmente.

Tasa de desconexiones inesperadas. Un pico en desconexiones fuera de las ventanas de mantenimiento indica inestabilidad. Las causas pueden ser de red (pérdida de paquetes entre el GameServer y el ConnectServer), de proceso (un plugin que genera una excepción no manejada) o de base de datos (tiempo de espera de consulta excedido que interrumpe la sesión). Los logs del GameServer son la primera fuente de información para discriminar entre estas causas.

Logs de arranque. Cada vez que el GameServer inicia, genera un log con el estado de carga de cada mapa, la conexión a la base de datos y la inicialización de los temporizadores de eventos. Revisa este log después de cada reinicio para confirmar que todos los componentes iniciaron correctamente. Un mapa que no cargó correctamente no mostrará error visible en el juego, pero sus monstruos no spawnearán y los jugadores verán el mapa vacío.

Reinicios de Emergencia y Recuperación de Fallos

Los reinicios de emergencia son inevitables en la operación de cualquier servidor de larga duración. La diferencia entre un servidor bien administrado y uno problemático no es la ausencia de emergencias, sino la velocidad y efectividad de la respuesta.

Cuando el GameServer deja de responder pero el proceso sigue activo, el primer paso es intentar ejecutar el flush desde la consola de administración antes de forzar el cierre. Si el proceso ya no acepta comandos, analiza los logs para determinar cuándo ocurrió la última escritura exitosa a la base de datos. Ese momento es el "punto de restauración" efectivo: los jugadores perderán el progreso posterior a esa marca.

Si la base de datos presenta corrupción detectada por el DBCC CHECKDB, no intentes reparar manualmente registros individuales. Restaura desde el último backup limpio y comunica a los jugadores el periodo afectado. Una restauración limpia es siempre preferible a una base parcialmente reparada que puede presentar inconsistencias difíciles de rastrear días después.

Documentar cada incidente de emergencia con marca de tiempo, causa raíz identificada, acciones tomadas y resultado es una práctica que parece burocrática pero que, tras varios meses de operación, construye un registro invaluable para identificar patrones recurrentes y anticipar fallos futuros.

Nota: Implementa un script de watchdog que verifique periódicamente si el proceso GameServer.exe está activo y, en caso de ausencia, registre el evento y notifique al administrador antes de intentar un reinicio automático. El reinicio automático sin diagnóstico puede enmascarar un problema recurrente y dificultar la identificación de la causa raíz. El script debe registrar el estado del sistema en el momento del fallo, no solo el hecho de que el proceso cayó.

Comunicación con los Jugadores

La dimensión técnica del mantenimiento es solo la mitad del trabajo. La otra mitad es la comunicación efectiva con la comunidad. Los jugadores toleran el mantenimiento cuando es predecible y comunicado con claridad; lo que genera frustración es el mantenimiento sin aviso o los reinicios de emergencia sin explicación posterior.

Establece un horario fijo de mantenimiento y respétalo. Si el horario debe cambiar, comunícalo con al menos 24 horas de anticipación. Usa el canal de anuncios del servidor para publicar el horario semanal y el estado en tiempo real durante los mantenimientos que se extiendan más de lo esperado. Después de cada reinicio de emergencia, publica un resumen breve de lo que ocurrió y qué se hizo para resolverlo, sin necesidad de entrar en detalles técnicos que la mayoría no necesita.

Esta práctica de transparencia reduce los reclamos, construye confianza en el equipo de administración y diferencia a los servidores serios de aquellos que operan sin estándares claros. El mantenimiento bien ejecutado y bien comunicado es, en definitiva, una forma de respeto hacia los jugadores que invierten su tiempo en el servidor.

Perguntas frequentes

¿Con qué frecuencia se debe reiniciar el GameServer?

Lo ideal es un reinicio diario programado en horario de baja concurrencia, generalmente entre las 04:00 y las 06:00. Este ciclo libera memoria acumulada, aplica cambios de configuración pendientes y restablece los temporizadores de eventos automáticos como Blood Castle, Devil Square y Crywolf. Servidores sin reinicio periódico tienden a presentar fugas de memoria progresivas y comportamiento errático en los eventos temporizados tras varios días de operación continua.

¿Qué pasos son obligatorios antes de apagar el GameServer?

Debes emitir un aviso en el chat global con al menos 15 minutos de anticipación, esperar a que los jugadores abandonen los mapas de evento activos, ejecutar el comando de flush para persistir los datos de personaje en la base de datos SQL, hacer un snapshot de la base antes del shutdown y solo entonces terminar el proceso del GameServer de forma controlada. Saltarse el flush es la principal causa de rollback de personajes.

¿Cómo identifico si hay una fuga de memoria en el servidor?

Monitorea el consumo de RAM del proceso GameServer.exe a lo largo del tiempo. En condiciones normales, el uso de memoria sube con la concurrencia y baja cuando los jugadores se desconectan. Si la memoria crece sostenidamente sin estabilizarse incluso en periodos de baja concurrencia, hay una fuga. Las causas más comunes son plugins de eventos customizados con bucles de spawn sin límite y consultas SQL que abren conexiones sin cerrarlas.

¿Qué diferencia hay entre un reinicio de emergencia y uno programado?

Un reinicio programado sigue la secuencia completa: aviso, flush, backup, shutdown, arranque y verificación. Un reinicio de emergencia se activa cuando el servidor está en un estado inestable — lag extremo, crash de un proceso, corrupción detectada — y puede omitir el aviso anticipado, pero nunca debe omitir el flush si el proceso aún responde. Si el proceso ya no responde, se prioriza la restauración desde el último backup limpio.

EQ

Equipo ViciadosMU

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Sigue leyendo

Artículos relacionados