2014-11-19 30 views
6

Windows 8.1'de askıda kalıyor. IIS 8.5. SignalR sürümleri: Benim proje/çözüm yeniden zamanSignalR, IIS'yi yeniden oluşturduktan sonra

<package id="Microsoft.AspNet.SignalR" version="2.1.2" targetFramework="net451" /> 
<package id="Microsoft.AspNet.SignalR.Core" version="2.1.2" targetFramework="net451" /> 
<package id="Microsoft.AspNet.SignalR.JS" version="2.1.2" targetFramework="net451" /> 
<package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.1.2" targetFramework="net451" /> 

, maksimum CPU kullanımı için sivri IIS ve benim sayfayı yeniden olamaz. Ben procmon.exe kontrol ve büyük miktarda bildiriyor (> 20 000/s) gibi bu olanları "RegOpenKey/RegQueryKey" operasyonların:

Date & Time: 19.11.2014 10:47:20 
Event Class: Registry 
Operation: RegQueryKey 
Result: SUCCESS 
Path: HKLM 
TID: 23272 
Duration: 0.0000059 
Query: HandleTags 
HandleTags: 0x0 

Date & Time: 19.11.2014 10:47:20 
Event Class: Registry 
Operation: RegOpenKey 
Result: REPARSE 
Path: HKLM\SYSTEM\CurrentControlSet\Services\SignalR\Performance 
TID: 23272 
Duration: 0.0000121 
Desired Access: Read 


Date & Time: 19.11.2014 10:47:20 
Event Class: Registry 
Operation: RegOpenKey 
Result: NAME NOT FOUND 
Path: HKLM\System\CurrentControlSet\Services\SignalR\Performance 
TID: 23272 
Duration: 0.0000062 
Desired Access: Read 

Bunlar bu sorunu yeniden oluşturmak için kullanın adımlar şunlardır:

  1. Her şey yolunda çalışıyor.
  2. Bazı kod yazmak ve
  3. SignalR WebSocket taşıma ile bir tekrar bağlanma yapar ve cevap başlığında bu yanıtı alır derlemek: "HTTP/1.1 101 Switching Protokoller"
  4. Ben bir istek ve IIS İşçi işlemi askıda kalır yapmak
  5. ve asla geri geliyor VEYA 2-3 dakika bekliyorum ve işler tekrar çalışıyor.

Bunu, IIS Express'te de yaşıyorum. Normalde, IIS Worker işlemini gerçekleştirerek ve yeniden yükleyerek bu sorunu çözerim. Bu bir izin sorunu mu? Şu anda uygulama havuzu yerel kullanıcımın altında çalışır, ancak aynı sonuçlarla Uygulama Havuzu Kimliğini denedim. "HKLM \ System \ CurrentControlSet \ Services \ SignalR \ Performance" içinde ne olmalıdır? Şu anda makinemde böyle bir kayıt defteri anahtarı yok.

cevap

4

Bu davranışı daha önce görmedim. 20,000/s "RegOpenKey/RegQueryKey" işlemleri sürekli 2-3 dakika sürüyor mu? Tüm bu işlemler "HKLM \ System \ CurrentControlSet \ Services \ SignalR \ Performance" yoluna erişiyor mu?

SignalR, herhangi bir performans sayacı yüklenemediğinde performans sayaçlarının daha fazla yüklenmesini durdurmak için tasarlanmıştır.

Belki de installing the SignalR performance counters sorununuzu çözecektir. Bu HKLM \ System \ CurrentControlSet \ Services \ SignalR \ Performance oluşturur.

Uygulama havuzunuzun "Performans İzleyicisi Kullanıcıları" grubunda bir kullanıcı altında çalıştığından emin olmanız gerekir.

+0

İstekler, askıya alındığı süre boyunca süreklidir, evet. 0,3 saniyede 0,3 saniyede kaydedildi - hepsi yukarıda bahsedildiği gibi aynı. Performans sayacını yüklemek yardımcı oldu, bunun için çok teşekkürler! – perkrihe

2

İyi haber! Bu sorunun resmi olarak ortaya çıktığı ve bir düzeltmenin uygulandığı görülmektedir. Sadece aynı sorun varsa, bunu paylaşmak istedim.

https://github.com/SignalR/SignalR/issues/3414

Görünüşe göre, sorun farklı bir AppDomain sızan bir CultureInfo neden oldu. System.Diagnostics ad alanında PerformanceCounter sınıf yapıcısında olur. henüz yayınlanmamış olan yeni bir paket yazma zamanda http://www.zpqrtbnk.net/posts/appdomains-threads-cultureinfos-and-paracetamol

, ama yakında resmi Nuget feed yoluyla kullanılabilir hale gelmelidir düzeltmek:

detaylı burada analizini bakın. Düzeltme, Microsoft.AspNet.SignalR.Core paketinde bulunur.

İlgili konular