2012-10-06 11 views

cevap

12

Bu, tasarım gereğidir. İki işçi süreci, durumu paylaşmaz ve istemciler, aralarında yuvarlak-robin esasına göre dağıtılır, bu da% 50'nin A işlemine ve% 50'sinin de B işlemine bağlanacağı anlamına gelir. Temeldeki SignalR ileti yolu, bellekte varsayılan, süreç bir proses B'den mesajları görmez

Ya bir "web bahçesi" ("web çiftliği" ile karıştırılmamalıdır) olarak adlandırılır ve sık hatalı uygulamalar daha duyarlı hale getirmek için kullanılır yapılandırıyoruz (bakınız this SO question). SignalR, ölçeklenebilirlik göz önünde bulundurularak, zeminden inşa edildiği için, bu yapılandırma size herhangi bir fayda sağlamayacaktır.

Benim tavsiye web bahçeleri ile çalışan bunu yapmak için bir yol Orada ancak 1.

de çalışan işlemi sınırını tutmaktır: Eğer REDIS veya Windows Azure Service Bus gibi harici mesajı otobüsü kullanmanız gerekir (ağ geçidi ek ağ gecikme sunma) süreçler arasında mesajlar paylaşmak için (ayrıntıları docs bulunabilir).

+0

Bu tam olarak soruma cevap veriyor. Bellek sızıntısı problemim var ve uygulama havuzlarını periyodik olarak geri dönüştürmek zorundayım. Yardım edip edemediğini görmek için web bahçesi ile oynarım. Teşekkürler. – Naptime

+0

Lütfen bu cevabı, http://www.asp.net/signalr/overview/performance/scaleout-in-signalr adresinde bulunan belgelerin doğrudan bağlantısıyla güncelleyin. Ayrıca, bir itirazım var: İşçi işlem limitini 1'de tutmak için tavsiyeyi sevmiyorum. 1'den fazla kullanmanın kesinlikle yararları var. Dokümantasyon, kullanıcıya 1'den fazla işçi işlemiyle nasıl çalışılacağını gösterecektir. onun seçeneklerini kısıtlıyor. – Icarus

+0

@lcarus teşekkürler, doğrudan bağlantıyı ekledim. Yine de bir işçi sürecine ilişkin tavsiyemi bırakacağım. Bir web bahçesinin belirli kullanım durumlarında bazı avantajları olsa da, kullanıcıların büyük çoğunluğuna ihtiyaç duyulmamalıdır. –