Files
crm.clientright.ru/ticket_form/docs/N8N_REDIS_TRIGGER_TROUBLESHOOTING.md
Fedor 52fe013375 feat(ticket_form): unified_id/contact_id передача, исправлен мерж сессии, новая сессия для жалобы
- Добавлены unified_id и contact_id в TicketFormDescriptionRequest
- Исправлен CODE_MERGE_PROJECT_TO_SESSION.js - теперь сохраняются ВСЕ данные из body.other
- Добавлен fallback на получение other из Webhook напрямую
- Генерация новой session_id при создании новой жалобы (сохраняя авторизацию)
- Добавлен SQL_SELECT_CONTACT_WITH_CUSTOM_FIELDS.sql для CRM контактов
- Создан SESSION_LOG_2025-11-25.md с документацией сессии
2025-11-25 20:02:21 +03:00

6.5 KiB
Raw Blame History

🔧 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. Мониторинг подписчиков

Запустить скрипт мониторинга:

cd /var/www/fastuser/data/www/crm.clientright.ru/ticket_form
python3 monitor_n8n_redis_trigger.py

Или добавить в cron для автоматической проверки:

# Проверка каждые 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

Создать скрипт для автоматического перезапуска:

#!/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:

# Таймаут для неактивных соединений (0 = отключить)
timeout 0

# Keepalive для TCP соединений
tcp-keepalive 60

# Максимальное количество клиентов
maxclients 10000

5. Логирование в n8n

Включить детальное логирование для Redis Trigger:

  • Settings → Logging → Level: debug
  • Проверить логи на ошибки подключения

📊 Диагностика

Проверка подписчиков

redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" PUBSUB NUMSUB "ticket_form:description"

Проверка подключения n8n к Redis

# Из контейнера n8n
docker exec -it n8n_container redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" PING

Тестовая публикация

redis-cli -h crm.clientright.ru -p 6379 -a "CRM_Redis_Pass_2025_Secure!" \
  PUBLISH "ticket_form:description" '{"type":"test","session_id":"test123"}'

Проверка логов n8n

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 контейнер:

    docker restart n8n_container
    
  2. Проверить Redis:

    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