ما الذي يمكن أن يجعل تطبيق .NET يجمد جهاز الكمبيوتر؟

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

  •  10-07-2019
  •  | 
  •  

سؤال

أعلم أن هذا ربما يكون السؤال الأساسي "يعتمد على..." ولكني سأقدر أي إرشادات حول مكان بدء البحث.

لدي تطبيق عميل/خادم يتحدث عبر إيثرنت.في أحد أجهزة الكمبيوتر أقوم بتشغيل الخادم والعميل وعلى جهاز آخر فقط العميل.واحد يعمل بنظام فيستا والآخر يعمل بنظام XPبعد فترة تشغيل تبلغ حوالي 3 أسابيع، يتجمد الكمبيوتر بالكامل ولا يعمل أي شيء، لا الماوس، ولا لوحة المفاتيح، ولا شيء - فقط قم بإيقاف تشغيل الطاقة.يرسل الخادم كل عشر ثوانٍ رسالة ping لمعرفة ما إذا كان العملاء على قيد الحياة أم لا، بخلاف ذلك، هناك عدد قليل من الرسائل الصغيرة تنتقل ذهابًا وإيابًا كل يوم.

أحاول معرفة ما إذا كنت أنا السبب أم شيء آخر.لقد بدأت جلسة وبعد بضعة أيام اعتقدت أنني سأتحقق من الزيادات الغريبة في استخدام الذاكرة ولكن أبعد من ذلك لدي أفكار قليلة جدًا.

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

المحلول

بعض الأفكار التي يجب مراعاتها:

  1. أنت تعلم أن الكمبيوتر لا يستجيب، لكن هذا لا يعني أنه معلق.هل يستجيب لping؟
  2. ربما يكون ضوء نشاط القرص مضاءًا طوال الوقت؟
  3. أنت تقول "لا توجد لوحة مفاتيح" - هل تقصد عدم وجود مفتاح caps lock أو مصابيح num lock؟
  4. على الرغم من أن تطبيق .NET قد يكون هو التطبيق الوحيد الذي تقوم بتشغيله في ذلك الوقت، إلا أن هذا لا يعني أنه هو سبب المشكلة.بعض الوظائف الخلفية يمكن أن تفعل ذلك.

على سبيل المثال، لاحظت أن النسخ الاحتياطي Retrospect، عند إنشاء لقطة، يجمد النظام بأكمله لمدة 10-15 دقيقة.أعني، لا يوجد قفل كبير، ولا يتم تحديث الساعة الموجودة في شريط المهام، ولا يمكن استخدام CTRL-ALT-DEL، ولا يمكن الكتابة في مربع نص "الإجابة" في SO، لا شيء.لم يكن للأمر علاقة بما كنت أفعله في ذلك الوقت، وهو الإجابة على سؤال حول SO.

بعد عودته، سألني إذا كنت إنسانًا.لقد جرحت مشاعري.؛-)

نصائح أخرى

هل يمكن إرفاق المصحح نواة لنظام التشغيل. وبهذه الطريقة يمكنك أن تكون قادرة على تفقد حالة OS والعملية الخاصة بك حتى لو كان نظام التشغيل لا يستجيب تماما. (لسوء الحظ، انها اصعب بكثير من مجرد ضرب "كسر" في VS. أقترح قراءة جون روبين في "تطبيقات التصحيح ل. NET ويندوز" قبل محاولة ذلك.)

ويمكنك أيضا محاولة لخلق مقالب الذاكرة من التطبيق الخاص بك في فترات منتظمة. قد يكون لديك للقيام البرمجة قليلا لذلك، وإن كان. (عادة، وكنت إنشاء ملف تفريغ مع ضغطة، وذلك باستخدام أداة مثل userdump أو adplus، ولكن إذا كان نظام التشغيل لا يستجيب لضربات المفاتيح، وهذا لن ينجح.) وبهذه الطريقة، أنت تعرف ما تنص العملية الخاصة بك في خلال أو قبل وقت قصير من معطلا. هذه الصفحة: http://blogs.msdn.com/debuggingtoolbox/default.aspx هي نقطة انطلاق جيدة للبرمجة WinDbg. (إذا كنت لا تعرف ماذا تفعل مع تفريغ الذاكرة، كنت تشير مرة أخرى كتاب جون روبين الممتاز على التصحيح!)

وبخلاف ذلك، ولا أستطيع أن أفكر فقط من الحيل التصحيح القياسية: لا تحدث هذه المشكلة على كل جهاز كمبيوتر؟ يحدث ذلك إذا لم تكن هناك طلبات العميل؟ يحدث ذلك في وقت أقرب إذا كان هناك المزيد من طلبات العميل؟ يحدث ذلك في وقت أقرب إذا كان هناك الذاكرة الفعلية المتوفرة أقل؟ حاول إزالة أجزاء من التطبيق الخاص بك (ربما على خادم منفصل للاختبار) ومعرفة ما إذا كان استمرار حدوث المشكلة، وهلم جرا. حاولت تشغيله في VM حتى تتمكن من معرفة ما اذا كان يستخدم وحدة المعالجة المركزية، القرص الصلب، أو الشبكة خلال تلك "تعليق".

وهذا لن يكون <م> من الجواب، ولكن أنصح تبدأ عن طريق فحص سجلات الأحداث نظام التشغيل الخاص بك وتشغيل بيرفمون لتتبع الذاكرة، واستخدام وحدة المعالجة المركزية الخ.

ما الكمبيوتر يتجمد، وخادم أو عميل؟ وما أنظمة تشغيل هم قيد التشغيل على التوالي؟

وكما ذكر دانيال L، يمكن الحلقات الاقتراع ضيقة تقتل حقا وحدة المعالجة المركزية. إذا كنت تستطيع، تغيير التعليمات البرمجية لاستخدام معالجات الأحداث، انها حل أكثر قوة من ذلك بكثير.

وأخيرا، هل أنت متأكد من عدم وجود مشكلة الأجهزة على الكمبيوتر تجميد؟

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