उच्च लोड के कारण सर्वर हैंग हो सकता है और त्रुटि "120 सेकंड से अधिक के लिए अवरुद्ध" हो सकती है?


17

वर्तमान में कुछ VM और 'नंगेमेटल' सर्वर चला रहे हैं। जावा कई बार 400% से अधिक उच्च पर चल रहा है। बेतरतीब ढंग से सर्वर कंसोल में त्रुटि के साथ लटका हुआ है "जावा - 120 सेकंड से अधिक के लिए अवरुद्ध" - kjournald, आदि।

मुझे एक dmesg आउटपुट नहीं मिल सकता क्योंकि किसी कारण से यह त्रुटि केवल कंसोल पर लिखती है, जिसकी मुझे एक्सेस नहीं है क्योंकि यह दूरस्थ रूप से होस्ट किया गया है। इसलिए मैं पूर्ण ट्रेस कॉपी नहीं कर सकता।

मैंने इस पर्यावरण को बदल दिया है - यहां तक ​​कि भौतिक सर्वर और यह अभी भी हो रहा है।

मैंने Hung_task_timeout_secs को 0 में बदल दिया है, यह http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/technical_Notes/deployment.html के अनुसार एक गलत सकारात्मक है ।

इसके अलावा, असमानता स्थापित नहीं है, शायद यह मदद करेगा?

यह Ubuntu 10.04 64 बिट है - नवीनतम 2.6.38-15-सर्वर और 2.6.36 के साथ एक ही मुद्दा।

सीपीयू या मेमोरी इश्यूज / कोई स्वैप बाएं इस मुद्दे का कारण नहीं बन सकता है?

यहाँ कंसोल संदेश है:

[58Z?Z1.5?Z840] INFUI task java:21547 blocked for more than 120 seconds.
[58Z?Z1.5?Z986] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z841.5?Z06Z] INFUI task kjournald:190 blocked for more than 120 seconds.
[58Z841.5?Z336] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z841.5?Z600] INFUI task flush-202:0:709 blocked for more than 120 seconds.
[58Z841.5?Z90?] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z841.5?3413] INFUI task java:21547 blocked for more than 120 seconds.
[58Z841.5?368Z] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z961.5?ZZ36] INFUI task kjournald:60 blocked for more than 120 seconds.
[58Z961.5?Z6Z5] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z961.5?31ZZ] INFUI task flush-202:0:709 blocked for more than 120 seconds.
[58Z961.5?3393] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.

जवाबों:


15

हाँ, यह कर सकता है।

इसका मतलब काफी स्पष्ट है: कर्नेल 120 सेकंड के लिए कार्य को निर्धारित नहीं कर सका। यह संसाधन भुखमरी को इंगित करता है, अक्सर डिस्क एक्सेस के आसपास।

irqbalanceमदद कर सकता है, लेकिन यह स्पष्ट नहीं है। क्या आप हमें इस संदेश के आसपास के साथ प्रदान कर सकते हैं dmesg, विशेष रूप से स्टैक ट्रेस जो इसका अनुसरण करता है?

इसके अलावा, यह एक झूठी सकारात्मक नहीं है। यह नहीं कहता है कि कार्य हमेशा के लिए लटका दिया गया है , और कथन पूरी तरह से सही है। इसका मतलब यह नहीं है कि यह आपके लिए एक समस्या है, और यदि आप किसी भी उपयोगकर्ता प्रभाव को नोटिस नहीं करते हैं, तो आप इसे अनदेखा करने का निर्णय ले सकते हैं।

इसके कारण नहीं हो सकता है:

  • एक CPU समस्या (या यों कहें कि वह एक बिलकुल अनुचित हार्डवेयर विफलता होगी),
  • एक मेमोरी इश्यू (बहुत ही अनुचित तरीके से हार्डवेयर की विफलता, लेकिन कई बार ऐसा नहीं होगा; एक प्रक्रिया के रूप में रैम की कमी नहीं होगी oom-killed)
  • स्वैप की कमी ( oom-killerफिर से)।

एक विस्तार करने के लिए, आप इसे इस अर्थ में स्मृति की कमी पर दोष दे सकते हैं कि रैम में आपके डेटा कैशिंग के सिस्टम को वंचित करने से अधिक I / O का कारण होगा। लेकिन यह "मेमोरी से बाहर चलने" जितना सीधा नहीं है।


/ Var / log / dmesg में कुछ भी रिकॉर्ड नहीं किया जा रहा है, इसलिए मैंने अभी-अभी जो कंसोल दिखाया है .. जब यह प्रतीत होता है कि सिस्टम 100% लटका हुआ है।
तीज

यह संदेश कर्नेल से आता है, यह dmesg(यदि यह हाल ही में पर्याप्त रूप से लॉग किया गया था) में दिखाई देगा क्योंकि यह कमांड कर्नेल लॉगिंग रिंग बफर को प्रिंट करता है। उम्मीद है कि आपका syslogसेटअप भी इसे कहीं लॉग इन करेगा /var/log, लेकिन मुझे नहीं पता था कि कहां।
पियरे कैरियर

जब आप कमांड चलाते हैं तो संदेश दिखाई नहीं देगा /var/log/dmesg, लेकिन हो सकता हैdmesg । फ़ाइल बूट प्रक्रिया के दौरान बनाई गई है और आम तौर पर केवल बूट-टाइम कर्नेल संदेशों को कैप्चर करता है (जो कि अन्यथा कर्नेल रिंग बफर से बाहर स्क्रॉल करेगा। आप भी रिपोर्ट को स्थापित / सक्षम sysstatऔर संसाधन उपयोग को देख सकते हैं। I / O / iowait, संभवतः स्वैपिंग से संबंधित है (sysstat इसे पहचानने में मदद करेगा)
डॉ। एडवर्ड मॉर्बियस

@ Dr.EdwardMorbius तो हम इसे कैसे ठीक करते हैं? मुझे इससे संबंधित एक प्रमुख मुद्दा हमारे जोस्ट्रा सर्वर के साथ मिल रहा है, जो हाल ही में उत्पादन के माहौल में शानदार चल रहा था।
यह उतार चढ़ाव भरा

@ सूचीबद्ध: देरी के लिए क्षमा करें, मैं अक्सर यहाँ नहीं हूँ। संक्षेप में: आपको अपनी जावा प्रक्रिया को प्रोफाइल करना होगा और यह पता लगाना होगा कि यह क्यों लटका हुआ है। कचरा संग्रहण एक ऐसा क्षेत्र है जिसे मैंने ट्यूनिंग में जारी किया है (और सफलताएं)। JVM कचरा संग्रह ergodymics देखें और देखें oracle.com/technetwork/java/javase/gc-tuning-6-140523.html मैंने पाया कि बढ़ती हीप ने स्पष्ट रूप से मदद की।
डॉ। एडवर्ड मॉर्बियस

6
sudo sysctl -w vm.dirty_ratio=10
sudo sysctl -w vm.dirty_background_ratio=5

इसके बाद बदलाव करें:

sudo sysctl -p

मेरे लिए इसे हल कर दिया ...।


6
आपको यह बताना चाहिए कि उन सेटिंग्स में से प्रत्येक क्या करता है।
19

6
यह एक ऐसे ही मुद्दे को तय करता है जो मैं एक डॉकटर वातावरण में कर रहा था। मुझे यहाँ एक स्पष्टीकरण मिला: blackmoreops.com/2014/09/22/… । "डिफ़ॉल्ट रूप से लिनक्स फाइल सिस्टम कैशिंग के लिए उपलब्ध मेमोरी का 40% तक का उपयोग करता है। इस निशान तक पहुंचने के बाद फाइल सिस्टम डिस्क पर सभी बकाया डेटा को फ्लश कर देता है, जिसके बाद सभी आईओएस तुल्यकालिक हो जाते हैं। इस डेटा को डिस्क में भेजने के लिए। डिफ़ॉल्ट रूप से 120 सेकंड की समय सीमा। इस मामले में IO सबसिस्टम डेटा को फ्लश करने के लिए पर्याप्त तेज़ नहीं है ... "
पीटर एम

2

मैं हाल ही में हमारे एक प्रोडक्शन क्लस्टर्स में इस त्रुटि से गुज़रा:

11 नवंबर 14:56:41 xxx कर्नेल: जानकारी: कार्य xfsalloc / 3: 2393 120 सेकंड से अधिक समय के लिए अवरुद्ध।

11 नवंबर 14:56:41 Xxxx कर्नेल: 2.6.32-504.8.1.el6.x8664 # 1 पर दागी नहीं

11 नवंबर 14:56:41 xxx: "इको 0> / proc / sys / कर्नेल / Hung_task_timeout_secs" इस संदेश को निष्क्रिय करता है।

..

सर लॉग्स के आगे सत्यापन में पाया गया कि IO प्रतीक्षा एक ही समय के दौरान बढ़ गई थी।

और हार्डवेयर की जाँच करने पर (भौतिक डिस्क) मध्यम त्रुटियों को देखा और अन्य एससीएसआई त्रुटियों ने एक भौतिक डिस्क पर लॉग इन किया था, जो कि आवंटित करने के लिए संसाधनों की कमी के कारण IOs को अवरुद्ध कर रहा था।

11/11/15 19:52:40: समाप्त pRDM 607b8000 झंडे = 0 TimeOutC = 0 RetryC = 0 अनुरोध c1173100 उत्तर 60e06040 iocStatus 0048 retryC / devId: 3 devFlags = f1482005 iocLogInfo: 311400

11/11/15 19:52:40: DM_ProcessDevWaitQueue: टास्क mgmt इन प्रोसेस devId = x 11/11/15 19:52:40: DM_ProcessDevWaitQueue: Task devmt इन प्रोसेस devId = x

तो यह हार्डवेयर त्रुटि के कारण था, हमारे क्लस्टर में।

इसलिए यह अच्छा होगा, यदि आप कोर फाइल की जांच कर सकते हैं और यह भी कि अगर ipmi उपयोगिता है, तो मुद्दे की जांच करने के लिए ipmiutil / ipmitool sel elist कमांड की जांच करें।

सादर, वीटी


0

आप अपने क्लाउड प्रदाता के मॉनिटरिंग इंटरफ़ेस पर जा सकते हैं और जांच सकते हैं कि क्या आपने अपने स्टोरेज के लिए निर्दिष्ट अधिकतम IOps को पार नहीं किया है, तो यह बताता है कि कैश डेटा को फ्लश करने में लंबा समय क्यों लगा।
अधिकतम IOps आपके संग्रहण विशेषता पृष्ठ पर उपलब्ध है।

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