शेल स्क्रिप्ट जो सीपीयू के उपयोग की निगरानी करती है और उच्च सीपीयू उपयोग के साथ सेवाओं को समाप्त करती है


1

हमारे पास एक विंडोज 2003 सर्वर है जहां 3 सेवाएं लगातार चल रही हैं। कभी-कभी ये सेवाएं 90% से अधिक सीपीयू का उपभोग करती हैं। इन सेवाओं को पुनः आरंभ करना सामान्य स्थिति देता है। मुझे एक स्क्रिप्ट / प्रोग्राम की आवश्यकता है जो लगातार सीपीयू के उपयोग की निगरानी करेगा और यदि उपयोग अधिक है तो उन सेवाओं को पुनः आरंभ करें।

थोड़ा शोध के बाद मुझे सीपीयू के उपयोग पर नजर रखने के लिए यह स्क्रिप्ट मिली टेकनेट

CPU उपयोग की निगरानी के लिए स्क्रिप्ट:

(get-counter -Counter "\Processor(_Total)\% Processor Time"
-SampleInterval 1 -MaxSamples 10 |
    select -ExpandProperty countersamples | select -ExpandProperty
cookedvalue | Measure-Object -Average).average

यह 10 सेकंड के लिए CPU उपयोग की निगरानी करता है और फिर औसत आउटपुट को प्रदर्शित करता है।

से भी स्टैक ओवरफ़्लो तथा सर्वर दोष मुझे विंडोज़ सेवाओं को पुनः आरंभ करने के लिए स्क्रिप्ट मिली। ( इनमे से कौन बेहतर है? )

अब सभी की जरूरत है सीपीयू उपयोग स्क्रिप्ट के लिए सेवा पुनरारंभ स्क्रिप्ट को कॉल करने के लिए जब उपयोग की स्थिति & gt; 90% पूरी हो। किसी भी सहायता की सराहना की जाएगी।


कौन सी सेवाएँ उच्च CPU उपयोग का कारण बनती हैं? Xperf का उपयोग करके देखें कि कौन से कार्य उपयोग का कारण बनते हैं।
magicandre1981

हम सर्वर पर एक ईपीएबीएक्स एप्लिकेशन चलाते हैं.. सेवाएँ उसी से संबंधित हैं ... मैं सेवाओं को जानता हूं..मैं केवल उन्हें फिर से शुरू करने के लिए एक तरीके की आवश्यकता है जब वे संसाधनों को हॉगिंग करना शुरू करते हैं।
Gh0sT

हाँ ... यदि आप निर्दिष्ट कर सकते हैं कि आप किस प्रकार के ऑपरेटिंग सिस्टम की आवश्यकता है तो यह बहुत अच्छा होगा। लिनक्स के लिए समाधान वास्तव में आसान है - mpstat -A | grep all | head -1 आपको सीपीयू उपयोग देगा और इसके मूल्य के आधार पर आप सेवाओं को पुनः आरंभ कर सकते हैं। विंडोज़ में मैं पॉवरशेल का उपयोग करने की सलाह दूंगा Get-WmiObject win32_processor | select LoadPercentage |fl जो आपको सीपीयू उपयोग देगा और सेवाओं को पुनरारंभ करने के लिए कमांड का उपयोग करेगा sc उचित स्विच / मापदंडों के साथ।
mnmnc

यह Server 2003 है। @ mnnnc मुझे लगता है कि WMI स्क्रिप्ट जिसे आप worte करते हैं वह किसी विशेष इंस्टैंट पर CPU उपयोग को दिखाएगा। अब कई कारण हो सकते हैं कि सीपीयू का उपयोग अचानक बढ़ सकता है। मुझे विशेष रूप से एक स्क्रिप्ट की आवश्यकता है जो समय की अवधि के लिए उपयोग की निगरानी करेगी (10 सेकंड कहें) तो यदि यह & gt; 90% है, तो कुछ विशिष्ट सेवाओं को पुनः आरंभ करेगा। मैं जोड़ सकता हूं कि सेवाएं तुरंत बंद नहीं होती हैं ... इसलिए हमें उन्हें फिर से शुरू करने के लिए कुछ समय इंतजार करने या उनकी स्थिति की जांच करने की आवश्यकता है। किसी भी मदद को बहुत सराहा जाएगा। अग्रिम में धन्यवाद।
Gh0sT

2
आपको उपकरण के निर्माता से संपर्क करना चाहिए और उनसे पूछना चाहिए कि सेवा सीपीयू को क्यों रोकती है।
magicandre1981

जवाबों:


4

सिर्फ रिकॉर्ड के लिए..इसलिए उत्तर :

$cpuutil=(get-counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 5 |
    select -ExpandProperty countersamples | select -ExpandProperty cookedvalue | Measure-Object -Average).average

If ($cpuutil -ge 90)
{Restart-Service MyService1, "My Service2", MyService3}
Else
{Exit}

Powershell वास्तव में जीवन को सरल बनाता है!


0

यदि कोई व्यावसायिक समाधान ठीक है, तो हमारी जाँच करें सेवा रक्षक । यह किसी भी विंडोज़ सेवा को बेबीसिट करेगा और यदि यह CPU को बहुत लंबे समय तक चलाता है तो इसे पुनः आरंभ करेगा।


जैसा कि मैंने पहले ही उल्लेख किया है ... ये हैं नहीं विंडोज़ सेवाएं
Gh0sT

@ gh0sT - मैं उलझन में हूँ - आपने कहा है कि OS Win2003 सर्वर है और अब यह विंडोज सेवा नहीं है। मुझे लगता है कि आपका मतलब यह हो सकता है कि सेवाएँ Microsoft द्वारा 'ऑपरेटिंग सिस्टम के साथ शिप नहीं की गई' के रूप में बनाई गई हों, लेकिन Windows2003 सर्वर पर चलने वाली एक तृतीय पक्ष सेवाएँ हैं। क्या मैं सही हूँ?
mnmnc

हां..सचाई..ये तीसरे पक्ष की सेवाएं हैं
Gh0sT
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.