Trasmetto e ricevo tutti i messaggi con 1 processo di lavoro IIS. Bump il processo di lavoro a 2, ricevo solo tutti gli altri messaggi (perso il 50%). È progettato, configurato o bug?SignalR ha perso i messaggi se IIS si configura con più di 1 processo di lavoro
risposta
Questo è di progettazione. I due processi di lavoro non condividono lo stato ei client verranno distribuiti tra di loro in base al round robin, il che significa che il 50% si connetterà al processo A e il 50% al processo B. Poiché il bus del messaggio SignalR sottostante è in memoria da default, il processo A non vede i messaggi dal processo B.
Quello che stai configurando è chiamato "web garden" (da non confondere con "web farm") ed è comunemente usato per rendere le applicazioni difettose più reattive (vedi this SO question). Poiché SignalR è stato progettato da zero con in mente la scalabilità, questa configurazione non ti darà alcun vantaggio.
mia raccomandazione è di mantenere il limite di processo di lavoro a 1.
V'è tuttavia un modo per farlo lavorare con giardini web: avresti bisogno di utilizzare un bus messaggio esterno come Redis o Windows Azure Service Bus (dettagli possono essere trovati nel docs) per la condivisione di messaggi tra i processi, che naturalmente introduce ulteriore latenza di rete.
- 1. Quando IIS ricicla il processo di lavoro?
- 2. Aumentare il numero di thread per processo di lavoro IIS
- 3. Richieste bloccate in RequestAcquireState nel processo di lavoro IIS
- 4. IIS espresso processo di lavoro non rilasciare assemblaggio
- 5. SignalR WebSockets su IIS 7.5
- 6. Può SignalR gestire i messaggi persi?
- 7. Syslog ha davvero un limite di messaggi di 1 KB?
- 8. jQuery capendo se il genitore ha perso 'focus'
- 9. SignalR fa bloccare IIS dopo la ricostruzione
- 10. L'elenco ha perso i punti elenco
- 11. Asp.net core + IIS Express. Come visualizzare i messaggi di registro?
- 12. Come verificare se un processo ha i diritti amministrativi
- 13. PHPMailer 5.1 invia messaggi duplicatie quando si aggiunge più di 1 ricevitore
- 14. F # Flussi di lavoro/Processo di sviluppo
- 15. Uso di Redis con SignalR
- 16. Scalatura SQL di Signalr: svantaggi dell'utilizzo di più flussi?
- 17. Unità di lavoro con più origini dati?
- 18. Determinare se un UL ha 1 o più LI entro
- 19. Creazione di com.apple.CoreData.ConcurrencyDebug 1 lavoro
- 20. servizio Attivazione processo Windows (WAS) ha rilevato un errore quando è iniziato un processo di lavoro per servire il pool di applicazioni
- 21. Messaggi di errore diagnostici più precisi con i modelli?
- 22. Messaggi duplicati SignalR su sqlDipendenza cambia
- 23. log4net - configura utilizzando più file di configurazione
- 24. Migliorare i messaggi di errore con pyparsing
- 25. Client SignalR con più connessioni
- 26. Contesto di attivazione perso quando si lavora con WinForm?
- 27. Come si crea un oggetto longevo all'interno di IIS/ASP.Net?
- 28. Disabilita il processo di lavoro dell'area di lavoro in Eclipse
- 29. processo di lavoro non ASP.NET tornare ancora i dati in blocchi di 31kb
- 30. HTTPS ha smesso di funzionare con IIS esprimono
Questo risponde esattamente alla mia domanda. Ho problemi di perdite di memoria e devo riciclare periodicamente i pool di applicazioni. Gioco con il web garden per vedere se aiuta. Grazie. – Naptime
Si prega di aggiornare questa risposta con il collegamento diretto alla documentazione, all'indirizzo: http://www.asp.net/signalr/overview/performance/scaleout-in-signalr. Inoltre, ho un'obiezione: non mi piace la raccomandazione di mantenere il limite del processo di lavoro a 1. Sicuramente ci sono benefici nell'usare più di 1. La documentazione mostrerà all'utente come farlo funzionare con più di 1 processo di lavoro senza limitando le sue opzioni. – Icarus
@lcarus grazie, ho aggiunto il collegamento diretto. Comunque lascerò la mia raccomandazione di un processo di lavoro. Mentre un web garden ha alcuni vantaggi in certi casi d'uso, la stragrande maggioranza degli utenti non dovrebbe averne bisogno. –