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

168 lines
6.5 KiB
Markdown
Raw Permalink 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.

# 🔧 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