Troubleshooting, performance tuning, and emergency recovery
Resource Optimization Implement Resource Limits:
# Add to high-resource services deploy: resources: limits: memory: 2G cpus: '1.0' reservations: memory: 1G cpus: '0.5' Database Performance Tuning:
PostgreSQL Optimization:
# Create custom PostgreSQL configuration # /mnt/swarm-data/postgres/postgresql.conf shared_buffers = 256MB effective_cache_size = 1GB maintenance_work_mem = 64MB checkpoint_completion_target = 0.9 wal_buffers = 16MB default_statistics_target = 100 random_page_cost = 1.1 MariaDB Optimization:
# Custom MariaDB configuration # /mnt/swarm-data/mariadb/my.cnf [mysqld] innodb_buffer_pool_size = 512M innodb_log_file_size = 128M max_connections = 100 query_cache_size = 64M Redis Optimization:
Common Issues and Solutions Service Won’t Start:
# Check service status docker service ps service-name # Common causes and solutions: # 1. Image not found docker service update --image correct-image:tag service-name # 2. Resource constraints docker service inspect service-name | grep -A 10 Resources # 3. Network issues docker network ls docker network inspect homelab # 4. Volume mount failures docker service logs service-name | grep -i "mount\|volume" ls -la /mnt/swarm-data/service-path/ Network Connectivity Issues:
Adding New Nodes Preparation for New Node:
# On new node - Install Docker Engine 28.4.0 curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh # Configure user permissions sudo usermod -aG docker $USER # Verify Docker installation docker version Join New Worker Node:
# On manager node - Get join tokens docker swarm join-token worker # Output: SWMTKN-1-[SECRET]-[SECRET] # On new worker node docker swarm join --token SWMTKN-1-[SECRET]-[SECRET] 10.0.4.11:2377 # Verify node addition docker node ls Join New Manager Node(if needed):