From baaf4bc1f759ed5ae371a45ea44c2a91f5d6ac63 Mon Sep 17 00:00:00 2001 From: nickpons666 Date: Fri, 20 Mar 2026 03:47:59 -0600 Subject: [PATCH] perf: Optimizar inicio de servicios para reducir consumo de RAM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Inicio escalonado con delays: Panel Web → 5s → Telegram → 10s → Discord - Flags de Python para reducir footprint de memoria - Variables de entorno PYTHONDONTWRITEBYTECODE y PYTHONOPTIMIZE - Límites de memoria en docker-compose.yml --- Dockerfile | 2 ++ docker-compose.yml | 5 +++++ iniciar_todo.py | 20 ++++++++++++-------- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 54c1f05..634304b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,6 +14,8 @@ COPY . . RUN mkdir -p /app/data ENV PYTHONUNBUFFERED=1 +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONOPTIMIZE=1 EXPOSE 8000 diff --git a/docker-compose.yml b/docker-compose.yml index 8c1f783..66f977e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -23,5 +23,10 @@ services: - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} - DB_NAME=${DB_NAME} + - PYTHONDONTWRITEBYTECODE=1 + - PYTHONOPTIMIZE=1 env_file: - .env + mem_limit: 512m + mem_reservation: 256m + pids_limit: 50 diff --git a/iniciar_todo.py b/iniciar_todo.py index c769c27..368ac1c 100755 --- a/iniciar_todo.py +++ b/iniciar_todo.py @@ -3,6 +3,7 @@ import subprocess import sys import os import signal +import time from datetime import datetime LOG_DIR = "/app/data/logs" @@ -25,7 +26,11 @@ print("=" * 40) processes = [] -def start_process(cmd, name): +def start_process(cmd, name, delay_before=0): + if delay_before > 0: + log(f"⏳ Esperando {delay_before}s antes de iniciar {name}...") + time.sleep(delay_before) + log(f"✅ Iniciando {name}...") log_path = f"{LOG_DIR}/{name.lower().replace(' ', '_')}.log" @@ -39,9 +44,9 @@ def start_process(cmd, name): processes.append((p, name)) return p -p1 = start_process(["python3", "botdiscord/bot.py"], "Discord Bot") -p2 = start_process(["python3", "bottelegram/telegram_bot.py"], "Telegram Bot") -p3 = start_process(["python3", "panel/main.py"], "Panel Web") +p1 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "botdiscord/bot.py"], "Discord Bot", delay_before=10) +p2 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "bottelegram/telegram_bot.py"], "Telegram Bot", delay_before=5) +p3 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "panel/main.py"], "Panel Web", delay_before=0) print("=" * 40) print("🎉 Todos los servicios funcionando!") @@ -69,10 +74,9 @@ while True: if p.poll() is not None: log(f"⚠️ {name} se detuvo, reiniciando...") if name == "Discord Bot": - p1 = start_process(["python3", "botdiscord/bot.py"], "Discord Bot") + p1 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "botdiscord/bot.py"], "Discord Bot", delay_before=10) elif name == "Telegram Bot": - p2 = start_process(["python3", "bottelegram/telegram_bot.py"], "Telegram Bot") + p2 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "bottelegram/telegram_bot.py"], "Telegram Bot", delay_before=5) elif name == "Panel Web": - p3 = start_process(["python3", "panel/main.py"], "Panel Web") - import time + p3 = start_process(["python3", "-X", "faulthandler", "-X", "importsys", "panel/main.py"], "Panel Web", delay_before=0) time.sleep(5)