Transmitimos y recibimos todos los mensajes con 1 proceso de trabajo IIS. Completa el proceso de trabajo a 2, recibo solo todos los demás mensajes (se pierde el 50%). ¿Es por diseño, configuración o error?SignalR perdió mensajes si IIS se configura con más de 1 proceso de trabajo
Respuesta
Esto es por diseño. Los dos procesos de trabajo no comparten estado y los clientes se distribuirán entre ellos de forma rotativa, lo que significa que el 50% se conectará al proceso A y el 50% al proceso B. Como el bus de mensajes SignalR subyacente está en memoria Por defecto, el proceso A no ve los mensajes del proceso B.
Lo que está configurando se llama un "jardín web" (que no debe confundirse con "granja web") y se usa comúnmente para hacer que las aplicaciones defectuosas sean más receptivas (ver this SO question). Como SignalR está construido desde cero con la escalabilidad en mente, esta configuración no le dará ningún beneficio.
Mi recomendación es mantener el límite de procesos de trabajo en 1.
Sin embargo, existe una manera de hacer que funcione con jardines web: que había necesidad de utilizar un bus de mensajes externo como Redis o Windows Azure Service Bus (se pueden encontrar detalles en el docs) para compartir mensajes entre los procesos, lo que por supuesto introduce una latencia de red adicional.
- 1. ¿Cuándo IIS recicla el proceso de trabajo?
- 2. ¿Cómo se configura Tomcat para usar más de 1 CPU?
- 3. IIS Proceso de trabajo utilizando MUCHA memoria?
- 4. Obtención de proceso de trabajo de IIS Volcados de bloqueo
- 5. Python ZeroMQ PUSH/PULL - ¿Perdió mensajes?
- 6. ¿Cómo se configura un servidor python wsgi en IIS?
- 7. proveedor de datos Oracle establece el proceso de trabajo de IIS cuando se detiene el sitio web
- 8. ¿Problemas para deshabilitar el cierre de IIS del proceso de trabajo inactivo?
- 9. VS 2010 + IIS: no se puede iniciar la depuración en el servidor web. El proceso de trabajo de IIS para la URL iniciada no se está ejecutando actualmente
- 10. Peticiones bloqueadas en RequestAcquireState en el proceso de trabajo de IIS
- 11. Función NSIS con más de 1 parámetro
- 12. XAML: La propiedad 'Recursos' se configura más de una vez
- 13. Cómo usar SignalR con .net 3.5
- 14. Debugging Azure: error al conectar el depurador al proceso de trabajo de IIS
- 15. ¿Cómo ver una cola de mensaje de proceso especificada si se conoce el PID del proceso?
- 16. Flujo de proceso/trabajo en Java
- 17. ¿Cómo se configura Syntastic con JSHint?
- 18. ¿Cómo se configura applicationIconBadgeNumber con scheduleLocalNotification?
- 19. Cómo envío mensajes del servidor al cliente usando SignalR Hubs
- 20. Problemas con SignalR con NuGet
- 21. Se perdió el formateo de TextBox cuando el foco cambia
- 22. ¿Cómo se configura el proceso asp.net para que se ejecute en una cuenta de dominio?
- 23. SignalR en la web móvil?
- 24. ¿Cómo se configura JPA con Spring 3?
- 25. ¿Mensajes de error de diagnóstico más precisos con plantillas?
- 26. "SELECCIONAR SUPERIOR 1 1" VS "SI EXISTE (SELECCIONAR 1"
- 27. ¿Cómo verificar si un proceso se está ejecutando con Delphi?
- 28. C# - cómo comprobar si un proceso se inició con éxito
- 29. Comprobar si el proceso se está ejecutando
- 30. ¿Cómo salir de un proceso ejecutado con Ruby si lleva más de 5 segundos?
Esto responde exactamente mi pregunta. Tengo problemas de pérdida de memoria y tengo que reciclar los grupos de aplicaciones periódicamente. Juego con el jardín web para ver si me ayuda. Gracias. – Naptime
Actualice esta respuesta con el enlace directo a la documentación, que se encuentra en: http://www.asp.net/signalr/overview/performance/scaleout-in-signalr. Además, tengo una objeción: no me gusta la recomendación de mantener el límite del proceso de trabajo en 1. Sin duda, hay beneficios en usar más de 1. La documentación mostrará al usuario cómo hacer que funcione con más de 1 proceso de trabajo sin limitando sus opciones. – Icarus
@lcarus gracias, agregué el enlace directo. Sin embargo, dejaré mi recomendación de un proceso de trabajo. Si bien un jardín web tiene algunas ventajas en ciertos casos de uso, la gran mayoría de los usuarios no debería necesitarlo. –