2012-02-02 7 views
6

हमारे पास एक एएसपी.NET 4.0 एमवीसी 3 एप्लीकेशन है जो F5 लोड संतुलित सर्वर पर चल रहा है।हैशटेबल सम्मिलन विफल रहा। लोड कारक बहुत अधिक है। - एएसपी.नेट 4.0 एमवीसी 3

हमें नीचे अपवाद प्राप्त हुआ। हम अपने वेब एप्लिकेशन में बहु-थ्रेडिंग नहीं करते हैं, लेकिन यह नहीं जानते कि F5 लोड संतुलन सर्वर समीकरण में फैक्टरिंग कर सकते हैं या नहीं। हम देखते हैं कि .NET के पुराने संस्करणों पर अपवाद होता है (अधिकांश अन्य पोस्ट .NET 2.0 और 3.5 के साथ सौदा करते हैं)। क्या किसी ने इस मुद्दे को .NET 4.0 के साथ अनुभव किया है?

अपवाद ने एप्लिकेशन को अनुपयोगी प्रदान किया क्योंकि लॉगिन पर कोई पृष्ठ अपवाद का सामना किए बिना लोड किया जा सकता था।

अन्य लिंक पहले ही समीक्षा:

2012-02-02 06: 01: 42,671 [26] गंभीर सिस्टम [(शून्य)] - XYZ एप्लिकेशन में एक अनचाहे अपवाद हुआ। सिस्टम। अविश्वसनीय अपवाद अपवाद: हैशटेबल सम्मिलन विफल रहा। लोड फैक्टर बहुत अधिक है। सबसे आम कारण हैशटेबल को एक साथ कई धागे लिख रहा है। System.ComponentModel.TypeDescriptor.GetProvider (प्रकार प्रकार) पर System.Collections.Hashtable.Insert (वस्तु कुंजी, वस्तु nvalue, बूलियन ऐड) System.ComponentModel.TypeDescriptor.NodeFor पर (प्रकार प्रकार, बूलियन createDelegator) पर पर System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider..ctor (प्रकार प्रकार) System.Web.Mvc.ModelBinderDictionary.GetBinder पर (प्रकार modelType, IModelBinder fallbackBinder) System.Web.Mvc.ControllerActionInvoker.GetModelBinder पर (ParameterDescriptor parameterDescriptor) सिस्टम.Web.Mvc.ControllerActionInvoker.GetParameterValue (ControllerContext नियंत्रक कॉन्टेक्स्ट, पैरामीटर डिस्क्रिप्टर paramete System.Web.Mvc.ControllerActionInvoker.GetParameterValues ​​(ControllerContext controllerContext, ActionDescriptor actionDescriptor) System.Web.Mvc.ControllerActionInvoker.InvokeAction पर (ControllerContext controllerContext, स्ट्रिंग actionName) पर rDescriptor) System.Web.Mvc.Controller पर। ExecuteCore() सिस्टम.Web.Mvc.ControllerBase.Execute (RequestContext requestContext)
सिस्टम.Web.Mvc.MvcHandler पर। <> c__DisplayClass6। <> c__DisplayClassb.b__5() सिस्टम.Web.Mvc.Async.AsyncResultWrapper पर। <> c__DisplayClass1.b__0() सिस्टम.Web.Mvc.MvcHandler पर। <> c__DisplayClasse.b__d() System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() System.Web.HttpApplication.ExecuteStep पर (IExecutionStep कदम है, बूलियन & completedSynchronously)

पर

जैसा कि आप स्टैक ट्रेस से देख सकते हैं, यह हमारे कोड में किसी विशेष स्थान को इंगित नहीं करता है जिससे इसे डीबग करना मुश्किल हो जाता है।

इस अपवाद का सामना करने से रोकने के लिए कोई सलाह बहुत सराहना की जाएगी।

+0

क्या आपने हैशटेबल को लॉक करने, अपने कार्यों को करने और फिर इसे अनलॉक करने का प्रयास किया है? टिप्पणियों के तहत पहला उदाहरण: http://msdn.microsoft.com/en-us/library/system.collections.hashtable.synchronized.aspx –

+2

@ स्पलैश-एक्स: संपूर्ण स्टैक ट्रेस फ्रेमवर्क कोड में है। – SLaks

+0

यह कहने में मददगार होगा कि "जब कोई उपयोगकर्ता पृष्ठ लोड करता है" –

उत्तर

0

इस सूत्र में किम की प्रतिक्रिया की जाँच करें: http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/172f4f77-601e-4b4f-8d98-582f8f62a98e


हाय मैट,

.NET 2.0 में, इस त्रुटि लगभग हमेशा एक से अधिक थ्रेड एक ही समय में Hashtable को संशोधित करने के कारण होता है। हैशटेबल को संशोधित करने से पहले ताले डालने का फिक्स है, क्योंकि हैशटेबल एकाधिक लेखक थ्रेडसेफ नहीं है। एक और संभावित समाधान हैशटेबल सिंक्रनाइज़ेड के माध्यम से सिंक्रनाइज़ किए गए रैपर के साथ काम करना है, हालांकि हम पूर्व को बेहतर नियंत्रण के लिए अनुशंसा करते हैं।

तो यह ठीक है अगर यह आपका कोड है जो हैशटेबल को संशोधित कर रहा है। आपके द्वारा प्रदान की गई जानकारी के आधार पर, मुझे लगता है कि यह मामला नहीं है। आपने बताया है कि आप एएसपी 2.0 वेबसाइट के साथ इस बग का सामना कर रहे हैं, इसलिए यह डाउनस्ट्रीम हैशटेबल कॉलर के कारण हो सकता है। उदाहरण के लिए, यदि कॉल स्टैक निम्न जैसा दिखता है, तो ध्यान दें कि यह एक बग है जिसे नवीनतम रिलीज़ के लिए तय किया गया है।

धन्यवाद, किम

स्टैक ट्रेस: ​​System.Collections.Hashtable.Insert (वस्तु कुंजी, वस्तु nvalue, बूलियन ऐड) पर System.Collections.Hashtable.set_Item (वस्तु कुंजी, वस्तु मूल्य) पर System.ComponentModel.TypeDescriptor.CheckDefaultProvider (प्रकार प्रकार) System.ComponentModel.TypeDescriptor.NodeFor पर (प्रकार प्रकार, बूलियन createDelegator) System.ComponentModel.TypeDescriptor.GetDescriptor पर (प्रकार प्रकार, स्ट्रिंग typeName) System.ComponentModel पर पर। SystemDebcriptor.GetAttributes (घटक टाइप टाइप करें) System.Web.UI.ThemeableAttribute.IsTypeThemeab पर System.Web.UI.Control.InitRecursive (System NamingContainer) पर System.Web.UI.Control.InitRecursive (नियंत्रण नामकरण नियंत्रक) पर System.Web.UI.Control.ApplySkin (पृष्ठ पृष्ठ) पर पर System.Web.UI.Control.InitRecursive (नियंत्रण namingContainer) System.Web.UI.Control.InitRecursive (नियंत्रण namingContainer) पर System.Web.UI.Control.InitRecursive (नियंत्रण namingContainer) पर System.Web पर पर .UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

6

यह एक असामान्य मुद्दा है लेकिन यह कई लोगों (मुझे शामिल) के लिए होता है। ऐसा लगता है कि यह किसी भी विशिष्ट लोड थ्रेसहोल्ड से जुड़ा हुआ प्रतीत नहीं होता है, यह सिर्फ "होता है" और एक बार यह लोड के बावजूद अधिक बार होता है।
समाधान:
अस्थाई: रीसेट IIS और उम्मीद बाँध ऐसा नहीं होता फिर
स्थायी: माइक्रोसॉफ्ट से पैच KB article में वर्णित जाओ या नेट के अगले संस्करण में जहां यह तय किया जा रहा है के लिए प्रतीक्षा (यह पहले ही 4.5 बीटा में तय किया गया है)

संबंधित मुद्दे