168 lines
6.5 KiB
Markdown
168 lines
6.5 KiB
Markdown
|
|
# 🔧 Troubleshooting: Redis Trigger в n8n зависает
|
|||
|
|
|
|||
|
|
## 🐛 Проблема
|
|||
|
|
|
|||
|
|
Redis Trigger в n8n перестаёт слушать канал `ticket_form:description`, хотя workflow активен.
|
|||
|
|
|
|||
|
|
## 🔍 Возможные причины
|
|||
|
|
|
|||
|
|
### 1. **Потеря соединения с Redis**
|
|||
|
|
- Соединение оборвалось из-за сетевых проблем
|
|||
|
|
- Redis перезапустился, но n8n не переподключился
|
|||
|
|
- Таймаут соединения
|
|||
|
|
|
|||
|
|
**Решение:**
|
|||
|
|
- Проверить логи n8n на ошибки подключения
|
|||
|
|
- Убедиться, что Redis доступен: `redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" PING`
|
|||
|
|
- Перезапустить workflow в n8n (отключить → включить)
|
|||
|
|
|
|||
|
|
### 2. **Проблемы с памятью/ресурсами**
|
|||
|
|
- n8n исчерпал память
|
|||
|
|
- Слишком много активных workflows
|
|||
|
|
|
|||
|
|
**Решение:**
|
|||
|
|
- Проверить использование памяти: `docker stats n8n_container`
|
|||
|
|
- Увеличить лимиты памяти для n8n
|
|||
|
|
- Перезапустить n8n контейнер
|
|||
|
|
|
|||
|
|
### 3. **Долгие операции в workflow**
|
|||
|
|
- Workflow обрабатывает сообщение слишком долго
|
|||
|
|
- Блокирует обработку новых сообщений
|
|||
|
|
|
|||
|
|
**Решение:**
|
|||
|
|
- Оптимизировать workflow (убрать долгие операции)
|
|||
|
|
- Использовать асинхронную обработку
|
|||
|
|
- Разбить workflow на несколько этапов
|
|||
|
|
|
|||
|
|
### 4. **Проблемы с сетью**
|
|||
|
|
- Временные сбои сети между n8n и Redis
|
|||
|
|
- Firewall блокирует соединение
|
|||
|
|
|
|||
|
|
**Решение:**
|
|||
|
|
- Проверить сетевую связность: `ping crm.clientright.ru`
|
|||
|
|
- Проверить firewall правила
|
|||
|
|
- Использовать retry-логику в workflow
|
|||
|
|
|
|||
|
|
## 🛠️ Решения для предотвращения
|
|||
|
|
|
|||
|
|
### 1. **Мониторинг подписчиков**
|
|||
|
|
|
|||
|
|
Запустить скрипт мониторинга:
|
|||
|
|
```bash
|
|||
|
|
cd /var/www/fastuser/data/www/crm.clientright.ru/ticket_form
|
|||
|
|
python3 monitor_n8n_redis_trigger.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Или добавить в cron для автоматической проверки:
|
|||
|
|
```bash
|
|||
|
|
# Проверка каждые 5 минут
|
|||
|
|
*/5 * * * * cd /var/www/fastuser/data/www/crm.clientright.ru/ticket_form && python3 monitor_n8n_redis_trigger.py >> logs/n8n_monitor_cron.log 2>&1
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. **Health Check для Redis Trigger**
|
|||
|
|
|
|||
|
|
Добавить в workflow n8n:
|
|||
|
|
- **Schedule Trigger** (каждые 5 минут)
|
|||
|
|
- **Redis Publish** (отправить тестовое сообщение)
|
|||
|
|
- **If Node** (проверить, обработалось ли сообщение)
|
|||
|
|
- **Send Alert** (если нет - отправить уведомление)
|
|||
|
|
|
|||
|
|
### 3. **Автоматический перезапуск workflow**
|
|||
|
|
|
|||
|
|
Создать скрипт для автоматического перезапуска:
|
|||
|
|
```bash
|
|||
|
|
#!/bin/bash
|
|||
|
|
# Проверка и перезапуск workflow если нет подписчиков
|
|||
|
|
|
|||
|
|
SUBS=$(redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" PUBSUB NUMSUB "ticket_form:description" | tail -1)
|
|||
|
|
|
|||
|
|
if [ "$SUBS" -eq "0" ]; then
|
|||
|
|
echo "⚠️ Нет подписчиков! Требуется перезапуск workflow"
|
|||
|
|
# Здесь можно добавить API вызов для перезапуска workflow через n8n API
|
|||
|
|
fi
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. **Настройка Redis для стабильности**
|
|||
|
|
|
|||
|
|
В `redis.conf`:
|
|||
|
|
```conf
|
|||
|
|
# Таймаут для неактивных соединений (0 = отключить)
|
|||
|
|
timeout 0
|
|||
|
|
|
|||
|
|
# Keepalive для TCP соединений
|
|||
|
|
tcp-keepalive 60
|
|||
|
|
|
|||
|
|
# Максимальное количество клиентов
|
|||
|
|
maxclients 10000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. **Логирование в n8n**
|
|||
|
|
|
|||
|
|
Включить детальное логирование для Redis Trigger:
|
|||
|
|
- Settings → Logging → Level: `debug`
|
|||
|
|
- Проверить логи на ошибки подключения
|
|||
|
|
|
|||
|
|
## 📊 Диагностика
|
|||
|
|
|
|||
|
|
### Проверка подписчиков
|
|||
|
|
```bash
|
|||
|
|
redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" PUBSUB NUMSUB "ticket_form:description"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Проверка подключения n8n к Redis
|
|||
|
|
```bash
|
|||
|
|
# Из контейнера n8n
|
|||
|
|
docker exec -it n8n_container redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" PING
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Тестовая публикация
|
|||
|
|
```bash
|
|||
|
|
redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" \
|
|||
|
|
PUBLISH "ticket_form:description" '{"type":"test","session_id":"test123"}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Проверка логов n8n
|
|||
|
|
```bash
|
|||
|
|
docker logs n8n_container | grep -i redis
|
|||
|
|
docker logs n8n_container | grep -i "ticket_form:description"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ✅ Быстрое решение
|
|||
|
|
|
|||
|
|
Если workflow завис:
|
|||
|
|
|
|||
|
|
1. **Отключить workflow** в n8n (кнопка "Active")
|
|||
|
|
2. **Сохранить** изменения
|
|||
|
|
3. **Включить обратно** (кнопка "Active")
|
|||
|
|
4. **Проверить подписчиков**: `PUBSUB NUMSUB "ticket_form:description"`
|
|||
|
|
|
|||
|
|
Если не помогло:
|
|||
|
|
|
|||
|
|
1. **Перезапустить n8n контейнер**:
|
|||
|
|
```bash
|
|||
|
|
docker restart n8n_container
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **Проверить Redis**:
|
|||
|
|
```bash
|
|||
|
|
redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" PING
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **Проверить сеть** между n8n и Redis
|
|||
|
|
|
|||
|
|
## 🔄 Рекомендации для продакшена
|
|||
|
|
|
|||
|
|
1. **Мониторинг**: Настроить автоматический мониторинг подписчиков
|
|||
|
|
2. **Алерты**: Настроить уведомления при отсутствии подписчиков
|
|||
|
|
3. **Health Checks**: Регулярные проверки работоспособности
|
|||
|
|
4. **Логирование**: Детальное логирование всех операций с Redis
|
|||
|
|
5. **Резервирование**: Рассмотреть использование Redis Sentinel для высокой доступности
|
|||
|
|
|
|||
|
|
## 📝 Логи для анализа
|
|||
|
|
|
|||
|
|
Проверить логи:
|
|||
|
|
- `/var/www/fastuser/data/www/crm.clientright.ru/ticket_form/logs/n8n_redis_monitor.log` - мониторинг
|
|||
|
|
- `docker logs n8n_container` - логи n8n
|
|||
|
|
- `/var/www/fastuser/data/www/crm.clientright.ru/ticket_form/backend/logs/` - логи backend
|
|||
|
|
|