استخدام الذاكرة ASP.NET في IIS أكبر بكثير مما كان عليه في Devenv. هل هذا طبيعي؟

StackOverflow https://stackoverflow.com/questions/4600773

سؤال

تحية طيبة!

لديّ تطبيق ASP.NET يقوم بإخلاص البيانات من حفنة من الصفحات الخارجية ، وتوصيف البتات ذات الصلة ويعرضها في جدول. إجمالي البيانات التي تم استردادها هي 3-4 ميغابايت والصفحة الناتجة حوالي 1 ميجابايت. أنا أستخدم WebRequest GetResponse المتزامن لاسترجاعها ، ولكن كانت المشكلة نفسها موجودة باستخدام عملية غير متزامنة BegingetResponse/EndgetResponse. لا يوجد الوصول إلى قاعدة البيانات ، ولا تخزين جلسة ، ولا تخزين مؤقت ، ولكن قائمة في الذاكرة تضم حوالي 100 كائن (إجمالي 1 ميجابايت من البيانات) ، بالإضافة إلى كمية جيدة من AJAX (AjaxControlToolkit). تظهر هذه المشكلة في الجولة الأولى من التطبيق ، حتى لو قمت بإعادة تشغيل IIS.

المشكلة:

عندما أقوم بتشغيل التطبيق على جهاز كمبيوتر DEV الخاص بي ، يبلغ الحد الأقصى لرسوم الالتزام حوالي 1.5 جيجابايت. أكبر مستخدم ، يقاس بحجم VM Manager ، هو webdev.webserver.exe (600 ميجابايت). يعمل التطبيق تماما.

عندما أقوم بتشغيله على Rent-A-Server (IIS 7.5 ، ذاكرة الوصول العشوائي 1 جيجا بايت) ، تتجاوز تكلفة الالتزام القصوى 3.8 جيجابايت. أكبر مستخدم هو W3WP.exe في 2.7 جيجابايت. تتوقف IIS إلى صفحة خطأ في توقيت. بالنظر إلى ميزانية الخادم المحدودة والأمل في امتلاك العديد من المستخدمين المتزامنين ، فأنا في حالة من الذعر.

هل هذا طبيعي؟ إذا صدمت خادم ذاكرة الوصول العشوائي حتى 4 جيجابايت ، هل سيكون ذلك كافيًا؟ هل سيتطلب العديد من المستخدمين المزيد من الذاكرة؟ هل يمكن أن يكون الجاني أياكس أو قائمة الكائنات؟

شكرا على اي البصيرة التي يمكنك تقديمها.

هل كانت مفيدة؟

المحلول 3

حسنًا ، بعد بعض العمل الشاق ، حددت الجاني: عدونا القديم الحلقة التي لا نهاية لها. بالطبع ، إذا كانت بيئة التطوير قد ألقت استثناءً ، لكنت قد اكتشفت المشكلة وأثبتها - لكنها لم تفعل ذلك.

أود أن أقول إن الدرس المستفاد هنا هو فهم أن الإصدارات المختلفة من IIS و Devenv تستجيب للأخطاء بشكل مختلف وأنه يجب علينا اختبار التطبيق في نفس التكوين الذي سيتم نشره فيه.

شكرا للجميع على ملاحظاتك.

نصائح أخرى

هل حاولت تشغيل هذا في بيئة Dev الخاصة بك تحت IIS 7.5؟
تأكد من debug = "false" ، وليس "صحيح" في web.config

أعتقد أنك بحاجة إلى الحصول على بعض أدوات تصحيح الأخطاء والتقاط تفريغ لعملية العمال لخادم الإنتاج الخاص بك ، فلن تتمكن من تشخيص هذه المشكلة بشكل صحيح مع Just Perfmon و Task Manager.

لقد نشرت هذه الإجابة على Stack Overflow لفترة من الوقت والتي يجب أن تجعلك تبدأ:

CLR من استثناءات الذاكرة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top