w3wp.exe باستخدام وحدة المعالجة المركزية 100 ٪ - من أين تبدأ؟

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

سؤال

يطلق تطبيق الويب ASP.NET الذي يعمل على IIS6 بشكل دوري على وحدة المعالجة المركزية تصل إلى 100 ٪. إنها W3WP المسؤولة عن جميع استخدامات وحدة المعالجة المركزية تقريبًا خلال هذه الحلقات. يبقى وحدة المعالجة المركزية مثبتة بنسبة 100 ٪ في أي مكان من بضع دقائق إلى أكثر من ساعة.

هذا على خادم التدريج والموقع يحصل فقط على حركة مرور خفيفة للغاية من المختبرين في هذه المرحلة.

قمنا بتشغيل ANTS Profiler على الخادم ، ولكن لم يكن من غير المنير.

من أين يمكننا أن نبدأ في معرفة سبب هذه الحلقات وما هو الكود الذي يحافظ على وحدة المعالجة المركزية مشغولة خلال كل ذلك الوقت؟

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

المحلول

  1. عدادات أداء Windows القياسية (ابحث عن نشاط آخر مرتبط ، مثل العديد من الطلبات أو الشبكة المفرطة أو القرص I/O ، إلخ) ؛ يمكنك قراءتها من التعليمات البرمجية وكذلك من Perfmon (إلى تشغيل جمع البيانات إذا كان استخدام وحدة المعالجة المركزية يتجاوز العتبة ، على سبيل المثال)
  2. عدادات الأداء المخصصة (لا سيما الوقت لطلبات خارج الصندوق والمكالمات الأخرى حيث يكون وقت التنفيذ غير مؤكد)
  3. تحميل الاختبار ، باستخدام أدوات مثل اختبار فريق Visual Studio أو WCAT
  4. إذا كنت تستطيع الاختبار أو الترقية إلى IIS 7 ، فيمكنك تكوين تتبع الطلبات الفاشلة لإنشاء تتبع إذا استغرقت الطلبات قدرًا معينًا من الوقت
  5. استخدم Logparser لمعرفة الطلبات التي وصلت في وقت ارتفاع وحدة المعالجة المركزية
  6. مراجعات الكود / السير (على وجه الخصوص ، ابحث عن الحلقات التي قد لا تنتهي بشكل صحيح ، مثل ما إذا حدث خطأ ، وكذلك الأقفال ومشكلات الخيوط المحتملة ، مثل استخدام الإحصائيات)
  7. وحدة المعالجة المركزية وتوصيف الذاكرة (يمكن أن يكون من الصعب على نظام الإنتاج)
  8. عملية المستكشف
  9. شاشة Windows Resource Monitor
  10. تسجيل خطأ مفصل
  11. تسجيل تتبع مخصص ، بما في ذلك تفاصيل وقت التنفيذ (ربما مشروطة ، استنادًا إلى عداد Perf باستخدام وحدة المعالجة المركزية)
  12. هل تحدث الأخطاء عند إعادة تدوير AppPool؟ إذا كان الأمر كذلك ، فقد يكون فكرة.

نصائح أخرى

إنها ليست إجابة كبيرة ، ولكن قد تحتاج إلى الذهاب إلى المدرسة القديمة والتقاط لقطة صورة لعملية IIS وتصحيحها. قد ترغب أيضًا في التحقق تيس فيرانديزمدونة - هي ركلة A ** مهندس تصعيد Microsoft وتركز مدونتها على تصحيح الأخطاء Windows ASP.NET ، ولكن المدونة ذات صلة بنظام Windows تصحيح الأخطاء بشكل عام. إذا قمت بتحديد علامة ASP.NET (وهو ما ربطته) ، فسترى عدة عناصر متشابهة.

إذا كانت وحدة المعالجة المركزية الخاصة بك تتسرب إلى 100 ٪ والبقاء هناك ، فمن المحتمل جدًا أن يكون لديك سيناريو مميت أو حلقة لا حصر لها. يبدو أن البروفيلر خيارًا جيدًا للعثور على حلقة لا حصر لها. ومع ذلك ، فإن Deadlocks أكثر صعوبة في تعقبها.

عملية المستكشف هي أداة ممتازة لاستكشاف الأخطاء وإصلاحها. يمكنك تجربتها لإيجاد مشكلة عالية وحدة المعالجة المركزية الاستخدام. يمنحك نظرة ثاقبة على الطريقة التي يعمل بها تطبيقك.

يمكنك أيضًا المحاولة Procdump لتفريغ العملية وتحليل ما حدث بالفعل على وحدة المعالجة المركزية.

أيضا ، انظر إلى عدادات perfmon الخاصة بك. يمكنهم إخبارك بمكان قضاء الكثير من وقت وحدة المعالجة المركزية. إليك رابط للعدادات الأكثر شيوعًا لاستخدامه:

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

قد نحاول تضييقها مع صفحة واحدة - وجدنا أن النمل حتى لا يكون الكثير من المساعدة في نفس الحالة أيضًا - ما انتهى بنا الأمر هو تشغيل الموقع ضرب صفحة شاهد وحدة المعالجة المركزية - اضغط على الصفحة التالية CPU - منهجية للغاية وتستغرق وقتًا طويلاً ولكن إذا لم تتمكن من العثور عليه مع بعض تتبع التعليمات البرمجية ، فقد تكون محظوظًا -

تمكنا من استخدام ملفات سجل IIS لتتبعها إلى مجموعة من الصفحات التي كانت مشبوهة -

امل ان يساعد !

هذا تخمين في أحسن الأحوال ، ولكن ربما يقوم فريق التطوير الخاص بك ببناء ونشر التطبيق في وضع التصحيح ، في وضع الإصدار. سيؤدي ذلك إلى حدوث ملفات .pdb. الآثار المترتبة على ذلك هو أن تطبيقك سيستغرق موارد إضافية لجمع حالة النظام وتصحيح المعلومات أثناء تنفيذ نظامك ، مما يتسبب في المزيد من استخدام المعالج.

لذلك ، سيكون الأمر بسيطًا بما يكفي لضمان بناءهم ونشرهم في وضع الإصدار.

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

  1. فقط انقر على الخادم الخاص بك في الجزء الأيسر من IIS.
  2. انقر على "عمليات العمال" في الجزء الرئيسي. أنت ترى بالفعل ما هو تجمع التطبيقات الذي يأخذ الكثير من وحدة المعالجة المركزية.
  3. انقر نقرًا مزدوجًا على هذا السطر (في النهاية تحديث بالنقر فوق "إظهار الكل") لمعرفة الصفحات التي تستهلك الكثير من وقت وحدة المعالجة المركزية (عمود "الوقت المنقضي") في هذا التجمع

إذا قمت بتحديد صفحة تستغرق وقتًا للتحميل ، فاستخدم SharePoint's Developer Dashboard لمعرفة أي مكون يستغرق وقتًا.

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