Files
aiform_prod/docs/N8N_REDIS_TRIGGER_TROUBLESHOOTING.md
AI Assistant 02689e65db fix: Исправление загрузки документов и SQL запросов
- Исправлена потеря документов при обновлении черновика (SQL объединяет вместо перезаписи)
- Исправлено определение типа документа (приоритет field_label над field_name)
- Исправлены дубликаты в documents_meta и documents_uploaded
- Добавлена передача group_index с фронтенда для правильного field_name
- Исправлены все документы в таблице clpr_claim_documents с правильными field_name
- Обновлены SQL запросы: claimsave и claimsave_final для нового флоу
- Добавлена поддержка multi-file upload для одного документа
- Исправлены дубликаты в списке загруженных документов на фронтенде

Файлы:
- SQL: SQL_CLAIMSAVE_FIXED_NEW_FLOW.sql, SQL_CLAIMSAVE_FINAL_FIXED_NEW_FLOW_WITH_UPLOADED.sql
- n8n: N8N_CODE_PROCESS_UPLOADED_FILES_FIXED.js (поддержка group_index)
- Backend: documents.py (передача group_index в n8n)
- Frontend: StepWizardPlan.tsx (передача group_index, исправление дубликатов)
- Скрипты: fix_claim_documents_field_names.py, fix_documents_meta_duplicates.py

Результат: документы больше не теряются, имеют правильные типы и field_name
2025-11-26 19:54:51 +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