लिनक्स सीपीयू उपयोग और प्रक्रिया निष्पादन इतिहास


38

क्या यह देखने का कोई तरीका है कि सबसे अधिक CPU उपयोग किस प्रक्रिया (तों) के कारण हुआ?

मेरे पास AMAZON EC2 Linux है जो CPU उपयोग 100 प्रतिशत तक पहुंच जाता है और मुझे सिस्टम को रिबूट करने के लिए बनाता है। मैं SSH (पोटीन का उपयोग करके) के माध्यम से भी प्रवेश नहीं कर सकता।

क्या यह देखने का कोई तरीका है कि इतने उच्च CPU उपयोग का क्या कारण है और यह किस प्रक्रिया के कारण हुआ?

मैं जानता हूं sarऔर इसके बारे में जानता हूं topलेकिन मुझे कहीं भी प्रक्रिया निष्पादन इतिहास नहीं मिला। यहाँ अमेज़ॅन EC2 मॉनिटरिंग टूल से इमेज दी गई है, लेकिन मैं यह जानना चाहूंगा कि यह प्रक्रिया किस वजह से हुई:

यहाँ छवि विवरण दर्ज करें

मैंने भी कोशिश की है, ps -eo pcpu,args | sort -k 1 -r | head -100लेकिन इस तरह के एक उच्च CPU उपयोग को खोजने में कोई भाग्य नहीं है।

जवाबों:


34

कुछ संभावित तरीके हैं जिनसे आप यह कर सकते हैं। ध्यान दें कि यह एक भगोड़ा परिदृश्य में इसकी पूरी तरह से संभव प्रक्रियाओं का कारण बनता है, न कि केवल एक।

पहला तरीका पृष्ठभूमि में चलाने और डेटा का उत्पादन करने के लिए पिडस्टेट स्थापित करना है।

pidstat -u 600 >/var/log/pidstats.log & disown $!

यह आपको सिस्टम के दस मिनट के अंतराल पर चलने का एक काफी विस्तृत दृष्टिकोण देगा। मेरा सुझाव है कि यह आपकी पहली कॉल ऑफ़ पोर्ट होगी क्योंकि यह सबसे मूल्यवान / विश्वसनीय डेटा के साथ काम करता है।

इसके साथ एक समस्या है, मुख्य रूप से अगर बॉक्स एक भगोड़ा सीपीयू लूप में चला जाता है और भारी लोड पैदा करता है - आपकी गारंटी नहीं है कि आपकी वास्तविक प्रक्रिया लोड के दौरान समय पर तरीके से निष्पादित होगी (यदि बिल्कुल भी) तो आप वास्तव में आउटपुट को याद कर सकते हैं !

इसके लिए देखने का दूसरा तरीका प्रक्रिया लेखांकन को सक्षम करना है। संभवतः दीर्घकालिक विकल्प के अधिक।

accton on

यह प्रक्रिया लेखांकन को सक्षम करेगा (यदि पहले से नहीं जोड़ा गया है)। यदि यह पहले नहीं चल रहा था, तो इसे चलाने के लिए समय की आवश्यकता होगी।

भागे हुए, कहने के लिए 24 घंटे - आप फिर ऐसी कमांड चला सकते हैं (जो इस तरह आउटपुट का उत्पादन करेगा)

# sa --percentages --separate-times
     108  100.00%       7.84re  100.00%       0.00u  100.00%       0.00s  100.00%         0avio     19803k
       2    1.85%       0.00re    0.05%       0.00u   75.00%       0.00s    0.00%         0avio     29328k   troff
       2    1.85%       0.37re    4.73%       0.00u   25.00%       0.00s   44.44%         0avio     29632k   man
       7    6.48%       0.00re    0.01%       0.00u    0.00%       0.00s   44.44%         0avio     28400k   ps
       4    3.70%       0.00re    0.02%       0.00u    0.00%       0.00s   11.11%         0avio      9753k   ***other*
      26   24.07%       0.08re    1.01%       0.00u    0.00%       0.00s    0.00%         0avio      1130k   sa
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28544k   ksmtuned*
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28096k   awk
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     29623k   man*
       7    6.48%       7.00re   89.26%       0.00u    0.00%       0.00s    

कॉलम इस प्रकार हैं:

  1. कॉल की संख्या
  2. कॉल का प्रतिशत
  3. इस प्रकार की सभी प्रक्रियाओं पर खर्च किए गए वास्तविक समय की मात्रा।
  4. प्रतिशत।
  5. उपयोगकर्ता CPU समय
  6. प्रतिशत
  7. सिस्टम CPU समय।
  8. औसत आईओ कॉल।
  9. प्रतिशत
  10. कमान का नाम

आप जिस चीज़ की तलाश कर रहे हैं वह प्रक्रिया प्रकार हैं जो सबसे अधिक उपयोगकर्ता / सिस्टम CPU समय उत्पन्न करते हैं।

यह CPU समय (शीर्ष पंक्ति) की कुल मात्रा के रूप में डेटा को तोड़ता है और फिर उस CPU समय को कैसे विभाजित किया गया है। प्रक्रिया लेखांकन केवल तभी ठीक से खाता है जब इसकी प्रक्रिया शुरू होती है, इसलिए यह संभव है कि सभी सेवाओं को सुनिश्चित करने के लिए इसे सक्षम करने के बाद सिस्टम को पुनरारंभ करें।

यह, किसी भी तरह से वास्तव में आपको एक निश्चित विचार नहीं देता है कि यह क्या प्रक्रिया हो सकती है जो इस समस्या का कारण है, लेकिन आपको अच्छा अनुभव दे सकती है। चूंकि यह 24 घंटे का स्नैपशॉट हो सकता है, इसलिए इसे ध्यान में रखते हुए तिरछे परिणामों की संभावना होती है। इसकी कर्नेल विशेषता के बाद से इसे हमेशा लॉग इन करना चाहिए और पिडस्टेट के विपरीत हमेशा भारी लोड के दौरान भी आउटपुट उत्पन्न होगा।

उपलब्ध अंतिम विकल्प भी प्रक्रिया लेखांकन का उपयोग करता है ताकि आप इसे ऊपर के रूप में चालू कर सकें, लेकिन फिर प्रत्येक प्रक्रिया के लिए cpu आँकड़ों के साथ समस्या के समय निष्पादित प्रक्रियाओं के कुछ आँकड़े बनाने के लिए प्रोग्राम "लास्टकॉम" का उपयोग करें।

lastcomm | grep "May  8 22:[01234]"
kworker/1:0       F    root     __         0.00 secs Tue May  8 22:20
sleep                  root     __         0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                   X root     pts/0      0.00 secs Tue May  8 22:49
ksmtuned          F    root     __         0.00 secs Tue May  8 22:49
awk                    root     __         0.00 secs Tue May  8 22:49

यह आपको कुछ संकेत भी दे सकता है कि समस्या क्या हो सकती है।


बहुत अच्छा और विस्तृत जवाब, अच्छी नौकरी!
बार्ट डे वॉस

2
MIfe, यह तुम प्रयोग नहीं किया है यह एक कोशिश दे दो! यह पिडस्टेट के रूप में एक ही जानकारी को इकट्ठा करता है लेकिन इसे एक इंटरफेस में प्रस्तुत करता है जो इंटरैक्टिव अन्वेषण के लिए बहुत अधिक उपयुक्त है। अगर आपके पास सर स्टाइल रिपोर्ट पसंद है तो इसमें एक अटॉप्सर कमांड भी है।
श्योपुर

18

Atop प्रक्रिया स्तर पर ड्रिल-डाउन को देखने और 28 दिनों के लिए इस डेटा को डिफ़ॉल्ट रूप से संग्रहीत करने के लिए एक विशेष रूप से आसान डेमॉन है। एक भयानक रीयल-टाइम मॉनिटरिंग इंटरफ़ेस प्रस्तुत करने के अलावा, आप उन लॉग फ़ाइलों को खोलने और उनके माध्यम से कदम बढ़ाने के लिए निर्दिष्ट कर सकते हैं।

लेख क्षमताओं के कुछ विचार देता है, और आप पर प्राप्त कर सकते मैनपेज

यह वास्तव में सॉफ्टवेयर का एक अद्भुत टुकड़ा है।


3

Psmon और monit जैसे कार्यक्रम शायद आपके लिए मददगार हों। वे आपके सिस्टम पर चल रही प्रक्रियाओं की निगरानी कर सकते हैं और यदि कोई सीमा (CPU उपयोग, मेमोरी उपयोग ...) पार हो जाती है, तो आप उन्हें सेट कर सकते हैं कि आपको ई-मेल रिपोर्ट क्या है।

दुर्व्यवहार प्रक्रियाओं को स्वचालित रूप से पुनरारंभ करना भी संभव है।


0

एक समाधान एक स्क्रिप्ट लिख रहा है जो एक मिनट क्रोन या स्लीप लूप के माध्यम से चलाया जाता है, और आपको एक ईबीएस वॉल्यूम के लिए एक ईमेल / एसपीपी नौकरी / डंप भेजता है ... संबंधित आउटपुट (dmesg, pstree -pa और ps aux, संभवतः के साथ vmstat) तत्काल यह एक निश्चित सीमा पर लोड औसत पाता है ...

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