मुझे दो समान उबंटू सर्वरों के बीच प्रदर्शन में भारी अंतर का कारण कैसे पता चलेगा?


9

मैं डेटा केंद्र के एक ही रैक (लोड बैलेंसर के पीछे) में दो डेल R410 सर्वर चला रहा हूं । दोनों में एक ही हार्डवेयर कॉन्फ़िगरेशन है, Ubuntu 10.4 चलाते हैं, एक ही पैकेज को स्थापित करते हैं और एक ही जावा वेब सर्वर (कोई अन्य लोड नहीं) चलाते हैं और मैं दोनों के बीच पर्याप्त प्रदर्शन अंतर देख रहा हूं।

दोनों सर्वरों की औसत प्रतिक्रिया समय में (नेटवर्क ऐप बिना किसी विलंबता के मापा जाता है) प्रदर्शन का अंतर सबसे स्पष्ट है: उनमें से एक दूसरे की तुलना में 20-30% तेज, बहुत लगातार है।
मैं dstatयह पता लगाने के लिए इस्तेमाल किया , अगर वहाँ अधिक संदर्भ स्विच, आईओ, स्वैपिंग या कुछ भी हैं, लेकिन मुझे अंतर का कोई कारण नहीं दिखता है। एक ही कार्यभार (कोई स्वैपिंग, वस्तुतः कोई आईओ) के साथ, एक सर्वर पर सीपीयू का उपयोग और लोड अधिक होता है।

इसलिए यह अंतर मुख्य रूप से सीपीयू बाउंड प्रतीत होता है, लेकिन एक साधारण सीपीयू बेंचमार्क का उपयोग करते समय sysbench(अन्य सभी लोड बंद होने के साथ) ने अंतर पैदा किया, यह केवल 6% था। तो शायद यह केवल सीपीयू ही नहीं बल्कि मेमोरी परफॉर्मेंस भी है।

अब तक मैंने जाँच की है:

  • सभी घटकों पर फर्मवेयर संशोधन (समान)
  • BIOS सेटिंग्स (मैंने एक डंप का उपयोग किया dmidecode, और इससे कोई अंतर नहीं दिखा)
  • मैंने तुलना की /proc/cpuinfo, कोई अंतर नहीं।
  • मैं के उत्पादन की तुलना में cpufreq-info, कोई अंतर नहीं है।
  • जावा / जेवीएम पैरामीटर (एक ही संस्करण और दोनों प्रणालियों पर पैरामीटर)

इसके अलावा, मैंने कुछ महीने पहले रैम को पूरी तरह से बदल दिया, बिना किसी प्रभाव के।

मै खो गया हूँ। मैं यह पता लगाने के लिए क्या कर सकता हूं कि क्या चल रहा है?

अद्यतन : याय! दोनों सर्वर अब समान रूप से प्रदर्शन करते हैं। यह "पावर CRAP" सेटिंग थी क्योंकि jim_m_somewhere ने टिप्पणियों में उनका नाम दिया था। "पावर मैनेजमेंट" के लिए BIOS विकल्प फास्ट सर्वर पर "अधिकतम प्रदर्शन" पर थे, और दूसरे पर "एक्टिव पावर कंट्रोलर" (डेल से डिफ़ॉल्ट सेटिंग)। जाहिर है कि मैं भूल गया, कि मैंने उस सेटिंग को दो साल पहले बनाया था, और मैंने ऐसा सभी सर्वरों पर नहीं किया। आपके बहुत उपयोगी इनपुट के लिए सभी को धन्यवाद!


2
संभव है कि आपके पास दोषपूर्ण रैम है। यदि आपका एप्लिकेशन नेटवर्क भारी है तो यह नेटवर्क स्टैक के साथ कुछ भी हो सकता है।
काइल

2
क्या आप BIOS में "एडवांस सीपीयू सेटिंग्स" की तुलना कर सकते हैं? - ऐसा करने के लिए एक ipmitool कमांड चलाने में सक्षम हो सकता है? क्या रैम पर गति समान है? मुझे लगता है कि अगर आपने डिस्क / कंट्रोलर पर बैटरी बैकअप दिया है तो आपने जाँच की है ... बस "ज़ोर से" सोच रहा है ... क्या दोनों बॉक्सों पर रैम एक ही है? पंजीकृत या पंजीकृत नहीं ... AH ... क्या आपने जाँच की है कि "पॉवर CRAP" - ACPI दोनों सर्वरों पर बंद है?
jim_m_somewhere

2
अगर वे एक ही डेटा की सेवा दे रहे हैं, तो कोई लोड संतुलन fw या dns से चल रहा है? नेटवर्क आँकड़े क्या दिखते हैं? जावा विन्यास समान हैं? जावा हीप आकार समान है? इस पर अंधेरे में शूटिंग।
au_stan

2
सॉफ्टवेयर विन्यास वास्तव में समान है? उदाहरण के लिए, क्या AppArmor एक पर सक्षम है और दूसरे पर अक्षम है? त्रुटियों के लिए 'dmesg' भी जांचें।
एंटन कोहेन

1
क्या आपने नेटवर्क की वायर्ड केबल, स्विच पर पोर्ट और आप आईपीएस भी देख रहे हैं या HDD के स्वास्थ्य की जांच कर रहे हैं ... सादर

जवाबों:


6

दो विचार, इस पर निर्भर करता है कि आप इसके साथ कितना आगे जाना चाहते हैं:

  1. दोनों सर्वर के डिस्क को स्वैप करें और देखें कि गति प्रदर्शन हार्डवेयर पर रहता है या सॉफ्टवेयर के साथ चलता है।

  2. आउटपुट की तुलना करें /opt/dell/toolkit/bin/syscfg -o complete-bios-config.outयदि आप किसी तरह इस पैकेज को स्थापित करने के लिए ट्रिक कर सकते हैं।


Dstat का उत्पादन बहुत स्पष्ट रूप से दिखा, कि प्रदर्शन में अंतर तब भी होता है, जब कोई IO नहीं होता है। उबंटू 10.4 पर syscfg स्थापित करना वास्तव में मुश्किल लगता है। मैं पहले से ही dmidecode के उत्पादन की तुलना करता था, sysctl अधिक दिखाएगा? शायद यह प्रत्येक BIOS स्क्रीन की तस्वीरों के लिए कम काम करता है और उनकी तुलना करता है। मैं यह कोशिश कर सकते हैं।
द डिकमैन

1
डिस्क स्वैप करने से मेरा मतलब आईओ की जांच करना नहीं था, बल्कि अगर यह सॉफ्टवेयर (गलत) कॉन्फ़िगरेशन है जो सुस्ती (उदाहरण के लिए एक अजीब कर्नेल पैरामीटर) पैदा कर रहा है।
chutz

3

उत्पादन और प्रसार की अधिक संभावनाएं:

  • sysctl -a (सुनिश्चित करें कि कर्नेल ट्यूनबल्स समान हैं)
  • बिल्ली / खरीद / व्यवधान (हो सकता है कि हार्डवेयर का कोई और टुकड़ा गड़बड़ हो?)
  • ipmitool सेंसर सूची (लंबे शॉट, लेकिन अधिक निम्न स्तर के अंतर, ओवरहीटिंग, वोल्टेज की समस्या आदि के लिए जांच)

धन्यवाद, दुर्भाग्य से इन आदेशों के उत्पादन में कोई स्पष्ट अंतर नहीं है।
द चकमैन

2
सभी अंतर स्पष्ट हैं, यदि आप सॉफ़्टवेयर का उपयोग करके फ़ाइलों की तुलना करते हैं । कृपया इस प्रश्न का संदर्भ लें: मैं दो कॉन्फ़िगर फ़ाइलों को कैसे अलग करूं?
स्काईवॉक

3

ऐसा लगता है कि यह मेरे से संबंधित लोड-बैलेंसर हो सकता है। जब आप कहते हैं "समान कार्यभार" तो आप इसे कैसे माप रहे हैं?
क्या आप सीधे अलगाव में परीक्षण लोड लागू करके प्रत्येक सर्वर को बेंचमार्किंग कर रहे हैं?
या क्या आप लोड-बॉलर के लिए कुछ लोड लागू कर रहे हैं और दोनों सर्वरों पर परिणाम देख रहे हैं?

यदि आप बाद में कर रहे हैं (लोड बैलेंसर के माध्यम से दोनों सर्वरों पर लोड को मापना) तो आपका लोड बैलेंसर सर्वर के बीच समान रूप से समान रूप से वर्कलोड को विभाजित नहीं कर सकता है (सर्वर की एक जोड़ी के लिए 20% तिरछा होना असामान्य नहीं है कि कैसे पर निर्भर करता है आपका लोड बैलेंसर यह तय करता है कि कौन कौन से अनुरोध करता है), जिससे एक सर्वर अधिक लोड ले रहा है, और इस तरह खराब प्रदर्शन करता है।

(यदि आप सीधे प्रत्येक बैलेंसर को अलग-थलग कर रहे हैं, तो अलगाव में, एक मध्यस्थ के रूप में लोड बैलेंसर का उपयोग किए बिना, और आपने सत्यापित किया है कि दोनों घटक समान हैं (निर्माता संशोधन के लिए) दोनों प्रणालियों के बीच तो मैं नुकसान में हूं - मैं अन्यथा समान सर्वर के बीच इस तरह के प्रदर्शन अंतर के लिए किसी अन्य औसत दर्जे का कारण नहीं सोच सकता)


आप सही हैं, हमारा लोड बैलेंसर भी यही करता है - यह वास्तव में एक विशेषता है। इसलिए मैंने बहुत तरीकों से मापा, और हाँ, मैंने प्रत्येक सर्वर पर एक ही अनुरोधों को एक बार व्यक्तिगत रूप से "पुनः दोहराया"। लेकिन यहां तक ​​कि कुछ समय के लिए सभी लाइव ट्रैफ़िक को एक ही सर्वर पर रखने के लिए और प्रतिक्रिया को तैयार करने के लिए आवश्यक प्रत्येक सर्वर की तुलना में अधिक जटिल सेटअप के रूप में एक ही परिणाम देता है।
द डीकमैन

हम्म - उस मामले में मैं आधिकारिक तौर पर स्तब्ध हूं - अगर सब कुछ वास्तव में समान है (और हमें लगता है कि यह बहुत अच्छी तरह से पुष्टि की गई है कि यह है) आपको प्रदर्शन संख्या (% 5-7%) पर त्रुटि के एक उचित मार्जिन के भीतर होना चाहिए - आप '' डबल से अधिक की विविधताएँ देखकर, और मुझे पता नहीं चला कि क्यों: - /
voretaq7

3

कुछ प्रोफाइलिंग टूल आज़माएं, या तो सिस्टम प्रोफाइलिंग जैसे कि perf या Java प्रोफाइलिंग जैसे VisualVM

पूर्ण के साथ आप PID द्वारा या तो चल रहे जावा प्रक्रिया को प्रोफाइल कर सकते हैं या बेंचमार्क को प्रोफाइल कर सकते हैं। दोनों प्रणालियों को देखें, देखें कि धीमी प्रणाली अपना समय कहां बिता रही है।

apt-get install linux-tools-common linux-tools

फिर कुछ इस तरह:

perf record -e cpu-cycles -p <pid>

या

perf record -a -g <benchmark command>

फिर

perf report

सिस्टम कैसे अलग तरीके से प्रदर्शन कर सकता है, इसके कुछ विचार:

पर्यावरण: हवा का तापमान या एयरफ्लो अलग है? क्या वे रैक में हैं? मैंने देखा है कि कंपन के कारण विभिन्न रैक पदों में सिस्टम अलग-अलग प्रदर्शन करते हैं। प्रत्येक रैक में कंपन के विभिन्न स्तर होते हैं। यह संभावना नहीं है, आपको देखते हुए कहा गया है कि लगभग कोई I / O उपयोग नहीं किया जा रहा है। लेकिन मैंने देखा है कि डिस्क को 2MB / सेकंड के क्रमिक रेक के लिए कंपन के कारण धीमी गति से लिखते हैं।

हार्डवेयर दोष: हार्डवेयर में से कोई भी दोषपूर्ण हो सकता है। धीमी गति से देखने के लिए प्रोफाइलिंग का उपयोग करें। यह एक खराब सीपीयू या चिपसेट हो सकता है, एक हीटसिंक ठीक से संलग्न नहीं है, जिससे कंपन प्रशंसकों के कारण कंपन, असफल प्रशंसक, यहां तक ​​कि एक खराब पीएसयू भी। उन चीज़ों की अदला-बदली का प्रयास करें, जिन्हें स्वैप करना आसान है।


1

किसी ने भी 'sysprof' का सुझाव क्यों नहीं दिया ..?

यह वह है जिसके लिए इसे डिज़ाइन किया गया था।

या ummm दूसरा विचार ... /etc/security/limits.conf में कुछ सीमाएँ भरने का प्रयास करें

दोनों को आजमाएं।

यदि आपको कुछ नहीं मिलता है .... तो आपको सुरक्षा की समस्या सबसे अधिक संभावना है या शारीरिक दोष है।

यह भी देखें: मेरा लिनक्स सर्वर "निर्मित प्रक्रियाओं की संख्या" और "संदर्भ स्विच" अविश्वसनीय रूप से तेजी से बढ़ रहे हैं

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