perf: optimizar PHP-FPM para 100 usuarios, limitar RAM Docker y config MySQL

main
parent 9067667fbc
commit a9c751b736

@ -49,7 +49,15 @@ RUN echo "opcache.enable=1" >> /usr/local/etc/php/conf.d/opcache.ini \
# PHP production settings
RUN echo "upload_max_filesize=20M" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "post_max_size=25M" >> /usr/local/etc/php/conf.d/uploads.ini
&& echo "post_max_size=25M" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "memory_limit=128M" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "max_execution_time=60" >> /usr/local/etc/php/conf.d/uploads.ini
# PHP-FPM pool settings para 100 usuarios concurrentes
RUN sed -i 's/pm.max_children = 5/pm.max_children = 15/' /usr/local/etc/php-fpm.d/www.conf \
&& sed -i 's/pm.start_servers = 2/pm.start_servers = 5/' /usr/local/etc/php-fpm.d/www.conf \
&& sed -i 's/pm.min_spare_servers = 1/pm.min_spare_servers = 3/' /usr/local/etc/php-fpm.d/www.conf \
&& sed -i 's/pm.max_spare_servers = 3/pm.max_spare_servers = 10/' /usr/local/etc/php-fpm.d/www.conf
WORKDIR /var/www/html

@ -3,6 +3,7 @@ services:
image: nginx:alpine
container_name: admision_prod_nginx
restart: unless-stopped
mem_limit: 64m
ports:
- "127.0.0.1:${APP_PORT:-8080}:80"
volumes:
@ -18,6 +19,7 @@ services:
image: ghcr.io/${GITHUB_REPO:-usuario/repo}/backend:${IMAGE_TAG:-latest}
container_name: admision_prod_backend
restart: unless-stopped
mem_limit: 1g
env_file:
- .env.prod
volumes:
@ -38,6 +40,7 @@ services:
image: ghcr.io/${GITHUB_REPO:-usuario/repo}/frontend:${IMAGE_TAG:-latest}
container_name: admision_prod_frontend
restart: unless-stopped
mem_limit: 64m
networks:
- admision_net
@ -45,6 +48,7 @@ services:
image: mysql:8.0
container_name: admision_prod_db
restart: unless-stopped
mem_limit: 512m
ports:
- "127.0.0.1:3306:3306"
environment:
@ -52,6 +56,7 @@ services:
MYSQL_DATABASE: ${DB_DATABASE:-admision_2026}
volumes:
- mysql_data:/var/lib/mysql
- ./mysql/my.cnf:/etc/mysql/conf.d/custom.cnf:ro
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-p${DB_PASSWORD}"]
interval: 10s

@ -0,0 +1,10 @@
[mysqld]
# Memoria
innodb_buffer_pool_size = 128M
innodb_log_buffer_size = 16M
# Conexiones (suficiente para 100 usuarios)
max_connections = 50
# Deshabilitar herramienta de diagnostico que consume ~70MB RAM innecesariamente
performance_schema = OFF
Loading…
Cancel
Save