uploader-bot/docs/TROUBLESHOOTING_502.md

157 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Устранение 502 ошибки MY Uploader Bot
## 🚨 Если получаете 502 Bad Gateway
Ошибка 502 означает, что nginx работает, но не может подключиться к backend приложению.
## 🔍 Быстрая диагностика
### 1. Запустите диагностический скрипт:
```bash
sudo /home/myuploader/uploader-bot/diagnose.sh my-public-node-3.projscale.dev
```
### 2. Проверьте статус контейнеров:
```bash
cd /home/myuploader/uploader-bot
sudo docker-compose -f docker-compose.production.yml ps
```
### 3. Проверьте логи приложения:
```bash
sudo docker-compose -f docker-compose.production.yml logs -f app
```
## 🛠️ Частые решения
### Решение 1: Приложение еще запускается
```bash
# Подождите 2-3 минуты и проверьте снова
sleep 180
curl -v https://your-domain.com/health
```
### Решение 2: Перезапуск сервисов
```bash
cd /home/myuploader/uploader-bot
sudo docker-compose -f docker-compose.production.yml restart app
```
### Решение 3: Полная перезагрузка
```bash
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: Проверка базы данных
```bash
# Проверка 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
```
## 🔍 Детальная диагностика
### Проверка локальных портов:
```bash
# 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:
```bash
sudo docker-compose -f docker-compose.production.yml exec nginx nginx -t
```
### Просмотр логов в реальном времени:
```bash
# Все сервисы
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
```
## 🚀 Тестирование после исправления
```bash
# 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. **Соберите диагностическую информацию:**
```bash
sudo /home/myuploader/uploader-bot/diagnose.sh your-domain.com > diagnostic_report.txt
```
2. **Сохраните логи:**
```bash
sudo docker-compose -f docker-compose.production.yml logs --tail=100 > all_logs.txt
```
3. **Проверьте ресурсы системы:**
```bash
docker stats --no-stream
df -h
free -h
```
## ⚡ Экстренное восстановление
Если ничего не помогает:
```bash
# 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"
- В логах нет критических ошибок