मेरे पास अपेक्षाकृत बड़ी इकाई फ्रेमवर्क मॉडल (लगभग ~ 300 टेबल) है जिसके लिए मैं क्वेरी/एप्लिकेशन प्रदर्शन को बेहतर बनाने के लिए दृश्य उत्पन्न करता हूं।.NET MVC/Entity Framework अनुप्रयोग में अत्यधिक उच्च स्मृति उपयोग
जब एप्लिकेशन न्यूनतम लोड के तहत होता है तो मुझे 6-7 घंटे के दौरान आवेदन के भीतर धीरे-धीरे स्मृति खपत में वृद्धि का अनुभव होता है। लगभग पहुंचने पर। 4 जीबी, एप्लिकेशन पूल रीसेट है और प्रक्रिया दोहराती है।
चित्रा 1: 8-9 घंटे
इस आवेदन के पाठ्यक्रम पर आवेदन स्मृति खपत दिखा भंडार पैटर्न का एक परिवर्तन का उपयोग करता है और यह सुनिश्चित करता है कि मेरे ObjectContext के उदाहरण instantiated और नष्ट कर रहे हैं प्रत्येक लेनदेन के लिए सबसे कम समय में व्यवहार्य। मैं किसी भी संसाधन को साफ करने के लिए सभी भंडारों/इंटरफेस पर आईडीस्पोजेबल को भी कार्यान्वित करता हूं।
मैं ऐसे लाल गेट के चींटियों प्रोफाइल, WinDbg और दूसरों के रूप में स्मृति प्रोफाइलर साथ आवेदन पर व्यापक परीक्षण किया है और अब तक स्मृति मुद्दे का सही कारण निर्धारित करने में असमर्थ किया गया है, लेकिन नीचे उल्लेख किया है:
एक लाल गेट चींटियों प्रोफाइलर परीक्षण से पता चलता भी कई इकाई फ्रेमवर्क MetadataWorkspaces बनाया जा रहा है, अतिरिक्त वस्तु मैपिंग और संबद्ध एसक्यूएल कमांड पाठ के बहुत सारे के कारण आयोजित होने वाले देखते हैं कि। एक विशेष भंडार में myEntities का भी एक उदाहरण है जो में मेटाडाटा वर्कस्पेस और InitializerMetadata कैश में तनाव परीक्षण के अंत में 351 प्रविष्टियां हैं। ये 351 प्रविष्टियां प्रत्येक में myEntities की एक और प्रति है, उनमें से प्रत्येक के पास मेटाडाटा वर्कस्पेस है, और उनमें से प्रत्येक में सैकड़ों ऑब्जेक्ट मैपिंग हैं।
मेरे कोर समाधान के रूप में संरचित है इस प्रकार है:
- प्रस्तुति - ASP.NET MVC 3
- व्यापार - वस्तुओं, ViewModels, इंटरफेस
- इन्फ्रास्ट्रक्चर - इकाई की रूपरेखा मॉडल
- डेटा एक्सेस - ADO.NET प्रत्यक्ष डेटा एक्सेस
यदि कोई भी y किसी भी पॉइंटर्स प्रदान करने में सक्षम है, मैं बहुत आभारी होंगे।
मुझे कोड पर अच्छा नज़र डालने के बिना भी यकीन नहीं है, लेकिन आम तौर पर जब आप मेमोरी लीक और ईएफ से निपट रहे हैं तो इसका स्नैपशॉट ट्रैकिंग का लक्षण लक्षण सही ढंग से साफ़ नहीं किया जा रहा है। आपने कहा था कि आप नियमित रूप से अपना संदर्भ निपटा रहे हैं लेकिन मैं इसे दोबारा जांच कर शुरू करूंगा। यहाँ एफई पर्फ़ समस्याओं के लिए मेरी निदान चादर: http://blog.staticvoid.co.nz/2012/8/1/entity_framework_performance_cheat_sheet –
हाय ल्यूक। यह एक महान संसाधन है - इसके लिए धन्यवाद। मैं पहले से ही ऐसा करता हूं (आलसी लोडिंग को अक्षम करने से कम) और आश्चर्य हुआ कि क्या कोई अन्य विशिष्ट जानकारी है जो मैं अपने प्रश्न के उत्तर पाने में मदद के लिए प्रदान कर सकता हूं? – Nick
बिल्कुल यकीन नहीं है कि मैं एएनटीएस प्रोफाइलर परीक्षण के बारे में आपकी टिप्पणी समझता हूं। वैसे भी, मैं उस भंडार को दोबारा करने की कोशिश करता हूं। जब myEntities स्वयं को संदर्भित करता है, तो आप निश्चित रूप से स्मृति समस्याओं के साथ समाप्त हो जाएंगे, जब तक आप बाल प्रविष्टियों में वर्चुअल कीवर्ड के साथ श्रृंखला को तोड़ नहीं देते। – B2K