2012-02-02 13 views
6

F5 yük dengeli sunucularında çalışan bir ASP.NET 4.0 MVC3 uygulamasına sahibiz.Hashtable ekleme başarısız oldu. Yük faktörü çok yüksek. - asp.NET 4.0 MVC3

Aşağıdaki istisnayı aldık. Web uygulamasında çok iş parçacığı yapmıyoruz, ancak F5 yük dengeleme sunucularının denklemi hesaba katıp katmadığını bilmiyoruz. .NET'in önceki sürümlerinde istisnanın nerede oluştuğunu görüyoruz (Diğer iletilerin çoğu .NET 2.0 ve 3.5 ile ilgilidir). Bu sorunu .NET 4.0 ile yaşadı mı?

İstisnalar, uygulamanın kullanılmaması nedeniyle istisnai bir durumla karşılaşmadan hiçbir sayfanın yüklenememesi nedeniyle uygulamayı kullanılamaz duruma getirdi.

Diğer bağlantıları zaten gözden: 01: 42.671 [26] ÖLÜMCÜL Sistemi [(boş

2012-02-02 06

)] - XYZ uygulamasında işlenmemiş bir istisnası oluştu. System.InvalidOperationException: Hashtable ek başarısız oldu. Yük faktörü çok yüksek. En yaygın neden, aynı anda Hashtable'a yazılan çoklu iş parçacıklarının olmasıdır. System.ComponentModel.TypeDescriptor.GetProvider (Tip tipi) de System.Collections.Hashtable.Insert (Nesne tuşu, Nesne nvalue, Boole eklenti) System.ComponentModel.TypeDescriptor.NodeFor de (Tip tip, Boolean createDelegator) en System.Web.Mvc.ModelBinderDictionary.GetBinder de System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider..ctor (Tip tipi) (Tip modelType, IModelBinder fallbackBinder) System.Web.Mvc.ControllerActionInvoker.GetModelBinder de (ParameterDescriptor parameterDescriptor) System.Web.Mvc.ControllerActionInvoker.GetParameterValue (ControllerContext controllerContext, ParameterDescriptor paramete System.Web.Mvc.Controller de System.Web.Mvc.ControllerActionInvoker.GetParameterValues ​​( System.Web.Mvc.ControllerActionInvoker.InvokeAction de ControllerContext controllerContext, ActionDescriptor actionDescriptor) (ControllerContext controllerContext, dize ActionName) de rDescriptor). System.Web.Mvc.ControllerBase.Execute (RequestContext requestContext)
adresindeki ExecuteCore() System.Web.Mvc.MvcHandler. <> c__DisplayClass6. <> c__DisplayClassb.b__5() , System.Web.Mvc.Async.AsyncResultWrapper. <> c__DisplayClass1.b__0() at System.Web.Mvc.MvcHandler. <> c__DisplayClasse.b__d() System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() System.Web.HttpApplication.ExecuteStep de (IExecutionStep aşama, Boole & completedSynchronously)

de

Yığın izinden de görebileceğiniz gibi kodumuzda hata ayıklamayı zorlaştıran belirli bir yere işaret etmiyor.Bu özel durumla karşılaşmayı önlemek için herhangi bir öneri çok takdir edilecektir.

+0

Hash takımı kilitlemeyi, eylemlerinizi gerçekleştirmeyi ve sonra kilidini açmayı denediniz mi? Açıklamalar altındaki ilk örnek: http://msdn.microsoft.com/en-us/library/system.collections.hashtable.synchronized.aspx –

+2

@ Splash-X: Tüm yığın izleme, çerçeve kodundadır. – SLaks

+0

"Kullanıcı bir sayfa yüklediğinde" durumunun bildirilmesi yararlı olurdu –

cevap

0

Kontrol dışarı Bu Konuda Kim'in cevabı: http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/172f4f77-601e-4b4f-8d98-582f8f62a98e


Merhaba Matt, .NET 2.0

, bu hata hemen hemen her zaman aynı anda Hashtable değiştirerek birden çok iş parçacığı neden olur. Hashtable, Hashtable'ı değiştirmeden önce kilitleri eklemektir, çünkü Hashtable birden çok yazıcılı threadafe değildir. Başka bir olası çözüm ise Hashtable.Synchronized ile senkronize edilmiş sarıcı ile çalışmaktır, ancak daha iyi kontrol için eskiyi tavsiye ederiz.

Bu, Hashtable'ı değiştiren kodunuzsa düzeltmenizdir. Sağladığınız bilgilere dayanarak, bu durum böyle değil. Bu hatayı bir ASP 2.0 web sitesiyle karşılaştığınızdan bahsetmiştiniz, bu yüzden bu bir aşağı akışlı Hashtable arayıcıdan kaynaklanabilir. Örneğin, çağrı yığını aşağıdaki gibi bir şey görünüyorsa, bunun en son sürüm için düzeltilmiş bir hata olduğunu unutmayın.

sayesinde Kim

Yığın izleme: System.Collections.Hashtable.Insert (Nesne tuşu, Nesne nvalue, Boole eklenti) de System.Collections.Hashtable.set_Item (Nesne tuşu, Nesne değer) de System.ComponentModel de System.ComponentModel.TypeDescriptor.GetDescriptor de System.ComponentModel.TypeDescriptor.NodeFor de System.ComponentModel.TypeDescriptor.CheckDefaultProvider (Tip tip) (Tip tipi, Boole createDelegator) (Tip tipi, dize typeName) de. System.Web.UI.ThemeableAttribute.IsTypeThemeab TypeDescriptor.GetAttributes (Type componentType) System.Web.UI.Control.ApplySkin (Sayfa sayfa) at System.Web.UI.Control.InitRecursive (Control namingContainer) at System.Web.UI.Control.InitRecursive (Control namingContainer) at (Tür türü) System.Web de System.Web.UI.Control.InitRecursive (Kontrol NamingContainer) de System.Web.UI.Control.InitRecursive (Kontrol NamingContainer) de System.Web.UI.Control.InitRecursive (Kontrol NamingContainer) de .UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

6

Bu yaygın olmayan bir sorundur, ancak birçok kişi için geçerlidir (dahil). Herhangi bir özel yük eşiği ile bağlantılı görünmüyor, sadece "gerçekleşir" ve bir kere yüklendikten sonra daha sık gerçekleşmeye devam ediyor.
Çözümleri:
Geçici: o olmaz IIS Reset ve parmak arası tekrar
Daimi: microsoft yama KB article açıklanan alın ya da sabit olacak Net bir sonraki sürümü beklemenizi (4.5 Beta) 'da düzeltildiği bildirilmiştir.