# πŸ”§ 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