وقتی کامپیوترم ناگهان به ۹۰٪ استفاده CPU رسید، مدتی به تب Processes در Task Manager خیره شدم و چند فرآیند را پایان دادم. امیدوار بودم مشکل حل شود، اما هیچچیز تغییر نکرد. Task Manager تمایل دارد محرکهای واقعی برخی مشکلات را پنهان کند، بنابراین به Event Viewer تغییر مسیر دادم. ظرف چند دقیقه، فرآیند و خطایی را که پردازندهام را تحت فشار قرار میدادند، پیدا کردم. وقتی با آنها مقابله کردم، استفاده CPU افت کرد و عادی ماند. از آن زمان به بعد، دیگر به همان اندازه از Task Manager استفاده نمیکنم.
گردش در Event Viewer
وقتی ابزار عمیقتر در واقع سریعتر است





ویندوز از همه چیزهایی که در یک کامپیوتر رخ میدهد ثبت نگه میدارد، از جمله خرابیها، هشدارها، بهروزرسانیهای ناموفق، مشکلات درایور و نصب برنامهها. این رویدادها را میتوان در Event Viewer یافت. با این حال، چندین لاگ وجود دارد و ممکن است دانستن نقطه شروع گیجکننده باشد. لاگهای System و Application محیطهایی هستند که احتمال وقوع فعالیتهای پسزمینه پر سر و صدا که میتوانند CPU را بالا ببرند در آنها بیشتر است.
در مورد من، خطاهای مکرر در لاگ WMI-Activity بودند. پس از رفتن به Applications and Services Logs -> Microsoft -> Windows -> WMI-Activity -> Operational، از ویژگی داخلی Filter Current Log برای جزئیات بیشتر استفاده کردم. سطح رویداد را روی Error و Warning تنظیم کردم و بازه زمانی (Logged) را دقیقاً روی همان بازهای که اسپایک رخ داد محدود کردم. این کار نویزها را حذف کرد و تنها کاری که باید انجام میدادم، جستن خطاهای مکرر Event ID یا منبعی بود که در بازه زمانی کوتاه تکرار میشد. خطاهای WMI-Activity یکسان را پیدا کردم که هر چند ثانیه ظاهر میشدند. وقتی با تب Details در Task Manager cross-check کردم، به یک تناقض پی بردم: Event Viewer معمولاً مؤلفه واقعی را نام میبرد (خطاهای مکرر از WmiPrvSE.exe در لاگ WMI-Activity)، در حالی که Task Manager ممکن است فقط یک فرآیند host عمومی را نشان دهد.
Event Viewer بهطور پیشفرض روی لاگهای Applications یا System باز نمیشود، به همین دلیل Task Manager در دسترستر به نظر میرسد. پس از گردش و فیلتر کردن، جزئیات بسیار مفیدتر از هر آنچه از Task Manager به دست آورده بودم بودند و بالاخره میتوانستم فرآیندی که اسپایک را_triggered کرده بود ببینم.
خطایی که مدام در پسزمینه راهاندازی مجدد میشد
Task Manager هرگز الگوی واقعی را نشان نداد

آنچه Event Viewer فاش کرد، یک خطای خاص بود که وارد یک حلقه شکست تنگ شده بود. WmiPrvSE.exe دائماً خراب میشد، خطا را ثبت میکرد و راهاندازی مجدد میشد. حتی پس از reboot کامپیوتر، دوباره به همان مشکل برمیخورد و خراب میشود.
این رفتار ممکن است در Task Manager عادی به نظر برسد. فرآیند مشکلدار فقط بهطور گذرا ظاهر میشود، CPU را بالا میبرد و ناپدید میشود. سعی کردم بر اساس CPU مرتب کنم، اما استفاده بالا چنان کوتاه بود و دائماً بین شناسه فرآیندها و نامهای عمومی مانند svchost.exe، RuntimeBroker و WmiPrvSE در حال حرکت بود، بنابراین الگو واضح نبود. دیدن منبع خطا که در یک بازه کوتاه در Event Viewer دائماً تکرار میشد، تمام وضوحی بود که نیاز داشتم. چرخه مداوم start-crash-restart همان چیزی بود که استفاده کلی CPU مرا برای مدتهای طولانی روی ۸۰-۹۰٪ نگه میداشت.
توقف دائمی حلقه
چند مرحله ساده که اسپایکها را برای همیشه پایان داد

پس از تأیید اینکه WmiPrvSE.exe در یک حلقه راهاندازی مجدد گیر کرده است، Windows Services را باز کردم، سرویس Windows Management Instrumentation را پیدا کردم و آن را راهاندازی مجدد کردم. این کار استفاده سنگین و بیوقفه از منابع را متوقف کرد. سپس، Command Prompt را با امتیازات بالا باز کردم و دستور زیر را اجرا کردم تا رفع مشکل ماندگار شود:
winmgmt /salvagerepository
این دستور مخزن WMI را بدون نیاز به reset کامل سیستم تعمیر میکند.
سیستم را reboot کردم و به لاگ خطای Event Viewer برگشتم، و WMI-Activity مکرر متوقف شده بود. با بررسی Task Manager، استفاده CPU نیز از حدود ۹۰٪ به حالت عادی افت کرده بود. فنهایی که زیر بار با صدای بلند میچرخیدند نیز آرام شدند.
مشکل تمام شده بود، اما دو مرحله دیگر انجام دادم: بررسی کردم که آیا یک کار مرتبط در حال اجرای کوئریهای WMI است یا خیر، و روز بعد به لاگ WMI-Activity برگشتم تا تأیید کنم خطا برنگشته است.
راه سریعتر برای عیبیابی ویندوز
البته، Event Viewer کمی قدیمی به نظر میرسد، بهخصوص در مقایسه با Task Manager که ویندوز در نسخههای متوالی آن را بهبود داده است. اما با این حال، بسیار عمیقتر از Task Manager به توالی واقعی خرابیها در ویندوز میرسد. اگر میدانید کجا را نگاه کنید، ابزار قدرتمندتری است.
| وضعیت | مدیریت وظایف | نمایشگر رویدادها |
|---|---|---|
| CPU بالا همین الان | نام پردازش و درصد را نشان میدهد | خطایی که آن را فعال کرده نشان میدهد |
| جهشهای متناوب | تشخیص آن دشوار است | الگوی تکرارشونده را آشکار میکند |
| پردازش عمومی (svchost, WmiPrvSE) | جزئیات محدود | نام مؤلفه واقعی یا ClientProcessId را مشخص میکند |
| بعد از راهاندازی مجدد | از صفر شروع میشود | تاریخچه کامل خطاها را نگه میدارد |
| یافتن علت ریشهای | بیشتر حدس و گمان است | شما را دقیقاً به سمت خرابی هدایت میکند |
این تجربه به من آموخت که دفعه بعد که افزایش CPU دارم که Task Manager آن را تشخیص نمیدهد، پاسخ در جایی در Event Viewer پنهان شده است. فیلتر کردن خطاها و هشدارهای اخلی تقریباً همیشه زمان کمتری نسبت به پایان دادن مکرر پردازشها در Task Manager میبرد. علاوه بر این، Event Viewer زمینه کافی را فراهم میکند تا از تکرار افزایش CPU جلوگیری کند.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Afam Onyimadu است. مشاهده مقاله اصلی