2008-09-08 17 views
7

मैं जावा प्रक्रिया के खिलाफ कुछ JMeter परीक्षण चला रहा हूं यह निर्धारित करने के लिए कि वेब एप्लिकेशन कितना उत्तरदायी है (500+ उपयोगकर्ता)। जेएमटर प्रत्येक वेब अनुरोध के लिए प्रतिक्रिया समय देगा, और मैंने प्रत्येक एक्स सेकंड में टॉमकैट प्रबंधक को पिंग करने के लिए एक स्क्रिप्ट लिखी है जो मुझे जेवीएम ढेर का वर्तमान आकार प्राप्त करेगी।शैल स्क्रिप्ट में सीपीयू उपयोग प्राप्त करें?

मैं टोमकैट द्वारा उपयोग किए जाने वाले CPU के% के सर्वर पर आंकड़े एकत्र करना चाहता हूं। मैं ps इस तरह का उपयोग कर एक खोल स्क्रिप्ट में यह करने की कोशिश की:

PS_RESULTS=`ps -o pcpu,pmem,nlwp -p $PID` 

... आदेश हर एक्स सेकंड चल रहा है और किसी पाठ फ़ाइल में परिणाम जोड़कर। (किसी को भी सोच, pmem =% mem उपयोग और nlwp के लिए धागे की संख्या है)

हालांकि मैंने पाया है कि यह "CPU उपयोग का%" की एक अलग परिभाषा देता है मेरी सोच से - के लिए manpages के अनुसार पीएस, pcpu को परिभाषित किया गया है:

सीपीयू "## # # प्रारूप में प्रक्रिया का उपयोग। यह CPU समय का उपयोग होता है जब प्रक्रिया चल रही है (cputime/realtime अनुपात), प्रतिशत के रूप में व्यक्त की जाती है।

दूसरे शब्दों में, pcpu मुझे प्रक्रिया के जीवन के लिए प्रक्रिया के लिए% CPU उपयोग देता है।

चूंकि मैं हर एक्स सेकेंड का नमूना लेना चाहता हूं, इसलिए मैं केवल वर्तमान समय पर प्रक्रिया का सीपीयू उपयोग एकत्र करना चाहता हूं - top के समान मुझे (प्रक्रिया के CPU उपयोग के बाद से आखिरी अपडेट)।

मैं इसे शैल स्क्रिप्ट के भीतर से कैसे एकत्र कर सकता हूं?

उत्तर

13

top -b का उपयोग करें (और यदि आप अलग-अलग आउटपुट चाहते हैं तो अन्य स्विच)। यह सिर्फ एक शाप खिड़की में कूदने के बजाय stdout करने के लिए डंप होगा।

2

मेरे सिर के ऊपर से, मैं सिस्टम स्थिति के/proc फाइल सिस्टम दृश्य का उपयोग करूंगा - मैन 5 proc पर देखें/proc/pID/stat के लिए प्रविष्टि के प्रारूप को देखने के लिए, जिसमें कुल शामिल है वैश्विक उपयोग की जानकारी प्राप्त करने के लिए सीपीयू उपयोग की जानकारी, और उपयोग/proc/stat। "वर्तमान समय" उपयोग प्राप्त करने के लिए, आप शायद वास्तव में "अंतिम एन सेकंड में उपयोग किया गया CPU" का अर्थ है; सीपीयू खपत की वर्तमान दर को देखने के लिए दो नमूने एक छोटी दूरी ले लो। फिर आप इन मानों को कुछ उपयोगी बना सकते हैं। वास्तव में, यह शायद एक शुद्ध खोल स्क्रिप्ट की तुलना में एक पर्ल/रूबी/पायथन नौकरी अधिक है।

हो सकता है कि आप किसी न किसी डेटा को/proc/pID/स्थिति के साथ प्राप्त कर सकें, जो प्रक्रिया के लिए नींद का औसत देता है। हालांकि बहुत मोटे डेटा।

5

जेएमटर पर परीक्षण करने के दौरान सर्वर की निगरानी के लिए मैंने पाया सबसे उपयोगी टूल dstat है। यह न केवल आपको सर्वर से आंकड़ों की एक श्रृंखला देता है, यह एक स्प्रेडशीट में आसान आयात के लिए सीएसवी को आउटपुट करता है और आपको पायथन में लिखे गए मॉड्यूल के साथ टूल का विस्तार करने देता है।

+0

dstat टूल के लिए धन्यवाद! –

0

भी 1 पुनरावृत्ति गणना के रूप में उपयोग करते हैं, तो आपको $ 22 देरी के समय में एक और प्राप्त करने के इंतजार किए बिना वर्तमान स्नैपशॉट मिलेगा।

top -b -n 1 
4

उपयोगकर्ता लोड: top -b -n 2 |grep Cpu |tail -n 1 |awk '{print $2}' |sed 's/.[^.]*$//' सिस्टम लोड: top -b -n 2 |grep Cpu |tail -n 1 |awk '{print $3}' |sed 's/.[^.]*$//' निष्क्रिय लोड: top -b -n 1 |grep Cpu |tail -n 1 |awk '{print $5}' |sed 's/.[^.]*$//'

हर परिणाम एक दौर दशमलव है।

संबंधित मुद्दे