2011-05-11 25 views
10

InProc, StateServer ve ASP.NET durum yönetimi için SQL Server'ı karşılaştıran pek çok harika bilgi buldum, fakat herhangi bir performans kıyaslaması bulunamadı. InProc'un, daha hızlı SQLServer'dan daha hızlı olan StateServer'dan daha hızlı olduğu açıktır, ancak ne kadar hızlı olduğu net değildir. Uygulamaya ve çevreye göre büyük ölçüde değişeceğinin farkındayım, ancak bunların nasıl karşılaştırılacağına dair göreceli bir fikre sahip olmak değerli olacaktır.ASP.NET Oturum Durumu Performansı Göstergeler

Paylaştığınız herhangi bir ölçütü biliyor musunuz? ya da bununla herhangi bir kişisel deneyiminiz mi var? Teşekkür ederim!

cevap

4

DevOps Guys iyi kriterler var.

. http://support.appharbor.com/kb/tips-and-tricks/using-memcached-backed-sessionprovider ve Oturum Provider https://github.com/friism/Memcached-Providers

+0

İşte Github adresinde başka Memcached oturum sağlayıcısı - https://github.com/rohita/MemcachedSessionProvider –

7

Kişisel deneyimim var, ancak paylaşılacak ölçütler veya kaydedilmiş metrikler yok. Başlangıçta, InProc yöntemini kullanarak oturumda normalden büyük bir kullanıcı nesnesi depolayan bir Asp.Net sitesi oluşturduk. Nesnenin büyüklüğünün ve hata işleme kitaplıklarımızın doğasının 2 istenmeyen davranışa neden olduğunu bulduk. Birincisi, uygulama havuzunun prosesler sırasında rastgele aralıklarla geri dönüşümüdür. W3wp.exe işlemi orta akımda kendini geri dönüştüreceğinden, aslında oturumu boşaltacaktır ve nesne kaybolacaktır. Bu, diğer kodun oturuma başlamasına ve oturumu onarmasına neden oldu ve işlemlerin gecikmesini artırdı. Aynı zamanda (her ne kadar korkunç bir problem olmasa da ve sadece tanımladığım bellek kaybını hata bulmaya çalışırken keşfettik), oturumdaki nesnenin büyüklüğünün, sayfanın kendisi için kitaplıklara yüklenen nesnelerin bir kısmı ile birlikte olduğunu bulduk. w3wp.exe kendini tekrar tekrar girip çıkıyor. Yalnızca oturum nesnesini veya bu kütüphane nesnelerini içeren ancak her ikisini de içermeyen daha küçük istekler için, süreçte tuhaf çağrı davranışı yoktu.

InProc'dan StateServer'a taşınırken, geri dönüşüme anında bir geri dönüş olduğunu keşfettik. Havuz aslında daha az geri dönüşüm kadar sona erdi ve ne zaman bile bizim seans nesneleri ayrı bellekte kaldı. Ayrıca, bu durumun, sayfalama ile ilgili olarak yukarıda açıklandığı gibi evrensel bir "kitaplık" durumu yarattığını ve tekrar deneyimlemediğimizi de fark ettik (itirafen 1 ay çalışma süresinin ardından kontrol etmeyi bıraktım). O zamanlar belirli çerçeve kitaplıklarına erişimde çok küçük bir gecikme yaşadık, ancak 2.0'dan 3,5'e yükseldiğimizde, bu erişim anomalileri tamamen ortadan kalktı. Yakında 3.5'ten 4.0'a yükseldiğimizde benzer davranışları umuyoruz.

bir durum kontrol olarak SQLServer kullanan bir test yeri

denendi ve bulduğumuz tek gecikme ilk oturum oluşturma/depolama idi. SQL'deki oturumu güncelleme/erişme için yapılan çağrılar, StateServer seçeneğinden hiçbir gerçek farklılık sağlamadı. Herhangi bir metriğim yok, ancak davranışlarda bir farklılık gösteren sistemlerde hiçbir şey yoktu. Zaman damgasının her yönüyle benzer farklılıkları vardı. o, nadir kullanım potansiyelinin biz Oturum durumu sunucusuyla doğrudan çift kullanıcı veritabanına başardık ve doğrudan damgaları, durumlarını ve diğer özel oturum değişkenlerini karşılaştırmak olmasıydı olsa bir yararı biz kazanç yaptık. Bu özellik için gerçek bir ihtiyacımız yoktu ve StateServer seçeneği üretim sunucularımızda zaten tam bir hızla ilerliyordu, dolayısıyla olduğu gibi bırakma kararlılığıydı.

Sonunda

, bu StateServer için ınproc dökümü bizi ikna bellek kullanımı gibi çok hız değildi. Erişim hızının faydaları kesinlikle verileri ilk sırada bellekte tutma ihtiyacından ağır basmadı.

+0

bu harika sağlar. Bu deneyimi paylaşmak için zaman ayırdığınız için teşekkür ederiz. Öyle görünüyor ki, geri dönüşüm sorununu gidermede büyük bir acı olmalı. StateServer olarak değiştirdikten ve 3.5'e yükselttikten sonra, InProc'u (orta yoldan geri dönüştürmediğinde) kullanma konusunda yaşadığınız herhangi bir gecikme oldu mu? –

+0

@Joel Beckham: En büyük acı, hata ayıklama teşhisini kullanıyordu. GIGS veri toplarlar. Sıralamak için eğlenceli değil. Bir kez StateServer'a geçtikten sonra hiç bakmadık (her şeyden önce bellek problemine sebep olan bazı şeyleri düzeltmemize rağmen). Zaman damgası verilerinin başlangıçta ve sonrasında karşılaştırılması arasında fark edilebilir bir fark bulunamadı. Bu ikisi arasında var olan gecikmeler, yalnızca bir agrega veya makine düzeyinde önemli olmalıdır. –

İlgili konular