uploader-bot/docs/TROUBLESHOOTING_502.md

4.8 KiB
Raw Blame History

Устранение 502 ошибки MY Uploader Bot

🚨 Если получаете 502 Bad Gateway

Ошибка 502 означает, что nginx работает, но не может подключиться к backend приложению.

🔍 Быстрая диагностика

1. Запустите диагностический скрипт:

sudo /home/myuploader/uploader-bot/diagnose.sh my-public-node-3.projscale.dev

2. Проверьте статус контейнеров:

cd /home/myuploader/uploader-bot
sudo docker-compose -f docker-compose.production.yml ps

3. Проверьте логи приложения:

sudo docker-compose -f docker-compose.production.yml logs -f app

🛠️ Частые решения

Решение 1: Приложение еще запускается

# Подождите 2-3 минуты и проверьте снова
sleep 180
curl -v https://your-domain.com/health

Решение 2: Перезапуск сервисов

cd /home/myuploader/uploader-bot
sudo docker-compose -f docker-compose.production.yml restart app

Решение 3: Полная перезагрузка

cd /home/myuploader/uploader-bot
sudo docker-compose -f docker-compose.production.yml down
sudo docker-compose -f docker-compose.production.yml up -d

Решение 4: Проверка базы данных

# Проверка PostgreSQL
sudo docker-compose -f docker-compose.production.yml exec postgres pg_isready -U my_user -d my_uploader_db

# Перезапуск базы данных если нужно
sudo docker-compose -f docker-compose.production.yml restart postgres redis

🔍 Детальная диагностика

Проверка локальных портов:

# API приложения (должен отвечать)
curl http://localhost:15100/health

# Nginx (должен перенаправлять)
curl -I http://localhost

# Проверка подключения к базе
sudo docker-compose -f docker-compose.production.yml exec app python -c "
import asyncpg
import asyncio
async def test():
    try:
        conn = await asyncpg.connect('postgresql://my_user:PASSWORD@postgres:5432/my_uploader_db')
        await conn.close()
        print('✅ База данных доступна')
    except Exception as e:
        print(f'❌ Ошибка подключения к БД: {e}')
asyncio.run(test())
"

Проверка конфигурации nginx:

sudo docker-compose -f docker-compose.production.yml exec nginx nginx -t

Просмотр логов в реальном времени:

# Все сервисы
sudo docker-compose -f docker-compose.production.yml logs -f

# Только основное приложение
sudo docker-compose -f docker-compose.production.yml logs -f app

# Только nginx
sudo docker-compose -f docker-compose.production.yml logs -f nginx

🚀 Тестирование после исправления

# 1. Проверьте статус всех контейнеров
sudo docker-compose -f docker-compose.production.yml ps

# 2. Проверьте health endpoints
curl http://localhost:15100/health
curl https://your-domain.com/health

# 3. Проверьте основные endpoints
curl -I https://your-domain.com/
curl https://your-domain.com/api/my/bootstrap/config

📞 Если проблема не решается

  1. Соберите диагностическую информацию:
sudo /home/myuploader/uploader-bot/diagnose.sh your-domain.com > diagnostic_report.txt
  1. Сохраните логи:
sudo docker-compose -f docker-compose.production.yml logs --tail=100 > all_logs.txt
  1. Проверьте ресурсы системы:
docker stats --no-stream
df -h
free -h

Экстренное восстановление

Если ничего не помогает:

# 1. Полная остановка
sudo systemctl stop my-uploader-bot
sudo docker-compose -f docker-compose.production.yml down -v

# 2. Очистка и перезапуск
sudo docker system prune -f
sudo docker-compose -f docker-compose.production.yml pull
sudo docker-compose -f docker-compose.production.yml up -d --build

# 3. Проверка через 5 минут
sleep 300
curl -v https://your-domain.com/health

🎯 Ожидаемый результат

После успешного исправления:

  • curl http://localhost:15100/health возвращает 200 OK
  • curl https://your-domain.com/health возвращает 200 OK
  • Все контейнеры в статусе "Up"
  • В логах нет критических ошибок