कैसे चल रहे चेक के इतने उदाहरणों को रोकने के लिए?


18

मेरे पास एक Ubuntu 12.04 सर्वर है जो सिर्फ एक बहुत स्पष्ट कारण की वजह से दुर्घटनाग्रस्त हो गया है: apt-checkसभी मेमोरी का उपभोग करने वाली 30+ प्रक्रियाएं, महत्वपूर्ण सेवाओं को मारते हुए OOM किलर। मुझे यकीन नहीं है कि apt-checkप्रक्रियाएं कहां से आती हैं, लेकिन मुझे लगता है कि मेरे Nagios / Icinga प्लगइन्स check_aptइसका उपयोग कर सकते हैं, साथ ही साथ byobuस्थिति रेखा इसके आउटपुट को प्रदर्शित करना चाह सकती है। मुझे लगता है कि कुछ बंद कर दिया गया था और सभी प्रक्रियाएं बस इंतजार कर रही थीं, फिर भी स्मृति पकड़े हुए थी।

मैं apt-checkसिस्टम पर इतने उदाहरणों को कैसे रोक सकता हूं ? मुझे इससे कोई मतलब नहीं है और इसे जल्द से जल्द छोड़ देना चाहिए क्योंकि इसे dpkg डेटाबेस पर रीड लॉक नहीं मिल सकता है।

ऐसा लगता है कि मैं यहां केवल एक ही मुसीबत में नहीं हूं। के लिए सभी सुझाव apt-checkबहुत नकारात्मक हैं:

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

(स्वच्छ ब्राउज़र, लॉग इन नहीं, कोई व्यक्तिगत खोज नहीं)

जवाबों:


8

कुछ लोगों apt-checkने मुझे यह संकेत दिया कि यह एक बहुत ही कुंद लिपि है जिसे ठीक करने की आवश्यकता है। इसके लेखकों के लिए पूरे सम्मान के साथ, यह मेरे सर्वर पर विफल हो रहा है। यहाँ मेरे विचार हैं:

  • apt-check == /usr/lib/update-notifier/apt_check.py
  • खुद के लिए अच्छा 19 बलों
  • कोई टाइमआउट क्रियाओं पर सेट नहीं है

अंतिम दो का संयोजन इसे नीचे की ओर एक सर्पिल में ढेर करने की अनुमति देता है। यदि सिस्टम उच्च प्राथमिकता के साथ कुछ अन्य उद्देश्यों के लिए उपयोग किया जाता है, तो प्रक्रियाओं की मात्रा बस बढ़ जाएगी और इसका कोई अंत नहीं है, क्योंकि apt-checkइसके ऊपर कभी भी कोई प्राथमिकता नहीं मिलेगी। OOM किलर आपकी महत्वपूर्ण प्रणाली प्रक्रियाओं को मारने का फैसला करने के बाद ही मुसीबत और भी बदतर हो जाएगी।

यदि व्यवहार में इन दोनों पहलुओं में से कोई भी अलग था, तो यह इस तरह के टूटे हुए राज्य में सिस्टम को खत्म करने की अनुमति नहीं देगा।

जबकि पैरेंट प्रक्रियाएं इसके लिए भी जिम्मेदार हैं, इसके बारे में तार सही हैं, मेरा मानना ​​है कि नीचे दिए गए बिंदुओं में खामियां हैं apt-checkऔर इसे ठीक से संबोधित करने के लिए बग के रूप में रिपोर्ट किया जाना है:

  • यह OOM हत्यारे को संकेत देना चाहिए कि उसने पहले खुद को मार डाला
  • इसे हार्डलेवल हार्डकोड को सेट नहीं करना चाहिए
  • यदि जानकारी के टुकड़े प्राप्त करने में अनुचित समय लगता है तो इसे बाहर निकल जाना चाहिए

दरअसल, ऐसा लगता है कि लिनक्स OOM किलर इस पर कुछ अनुमान लगा रहा है। Niced प्रक्रियाओं को एक बढ़ा स्कोर मिलेगा, और लंबे समय तक चलने वाली प्रक्रियाएं कम हो जाती हैं। ( स्रोत - करने के लिए धन्यवाद उलरिच Dangel के लिए यह उनका कहना है )

संभावित समाधान जिसका मैं प्रस्ताव कर सकता हूं:

  • प्रसंस्करण के बाद कैश परिणाम
  • आउटपुट कैश यदि प्रत्येक सरल (सम ) आह्वान के लिए सभी पायथन-एपीटी पुस्तकालयों को लोड किए बिना सेकंड की एन मात्रा से कम है --help
  • नेकवेल को कॉन्फ़िगर करने योग्य बनाएं - मुझे इसे बदलने / अक्षम करने की अनुमति दें, कृपया! मेरा मानना ​​है कि इसे 0 पर सेट करने से वास्तव में मदद मिलेगी
  • यह OOM हत्यारा स्कोर बढ़ा है

मुझे लगता है कि आपको सबसे बड़ी बात याद आती है कि इसे करना चाहिए: एक लॉकफ़ाइल का उपयोग करें और एक बार में एक से अधिक उदाहरणों को चलाने की अनुमति न दें।
derobert

@derobert यह एक स्क्रिप्ट है जिसे कोई भी उपयोगकर्ता चला सकता है, उबंटू पर विशिष्ट विशेषाधिकार के बिना, डेमॉन नहीं। या क्या मैं इस विश्व-पठनीय / लिखने योग्य लॉक फ़ाइल का सुरक्षित रूप से उपयोग /var/run/ कर सकता हूं /tmp? वहां बड़ा छेद: लॉक फ़ाइल जोड़ें और व्यवस्थापक को सिस्टम अपडेट के बारे में सूचित नहीं किया जाएगा!
gertvdijk

जो भी इसे स्वचालित रूप से लॉन्च कर रहा है (30+ प्रतियां चल रही हैं) को लॉकिंग करने की आवश्यकता है। या यह स्वयं, प्रति उपयोगकर्ता कर सकता है। किसी भी तरह से, यह एक बग है जिसे हल करने की आवश्यकता है।
derobert

Nagios / Icinga नुकसान से बचने के लिए लगता है। कम से कम, इसमें कुछ 10 समय की अवधि थी और यदि इसे पार कर लिया गया था तो चेतावनी दी गई थी। (हालांकि मैं टाइमआउट को कॉन्फ़िगर करने का तरीका नहीं खोज सकता - मैं अधिक समय तक पसंद करूंगा)। डेबियन पर बायोबू मेरे लिए समस्या का कारण बना; उबंटू पर यह तय माना जाता है
sourcejedi

4

आपको यह पता लगाना होगा कि उपयुक्त प्रक्रिया क्या है। आप प्रक्रिया पेड़ प्राप्त करने के लिए पी एस जैसे कुछ का उपयोग कर सकते हैं।

ps -A --forest

यदि एप्ट-चेक के माता-पिता नहीं हैं, तो यह एप-चेक के साथ एक समस्या हो सकती है और किसी विशेष कार्यक्रम की नहीं। अगर ऐसा है तो मैं एप-चेक डिबग करने की कोशिश करूंगा।


धन्यवाद। मुझे आगे देखने के लिए कुछ विचार दिए। हालांकि, इससे मुझे विश्वास है कि यह apt-checkवास्तव में एक समस्या है - मेरा खुद का जवाब देखें
gertvdijk

यदि यह मेमोरी और सीपीयू समय का उपभोग कर रहा है, तो यह एक ज़ोंबी नहीं है।
गिल्स एसओ- बुराई को रोकना '

@ गिल्स अच्छी बात है।
तार

0

Ubuntu 12.04 पर लिखित आधार

मुझे एक ही समस्या है और पता चला है कि इसकी वजह से byobu, अगर मैं सिर्फ apt-get updateउपयोग नहीं कर रहा हूं, तो byobuकोई check-aptप्रक्रिया नहीं होगी । इसके अलावा, यह update-notifierपैकेज से संबंधित है , जब मैंने उन पैकेजों (अपडेट-नोटिफ़ेर-कॉमन, अपडेट-नोटिफ़ायर) को हटा दिया, तो उपयोग करना byobuऔर चलाना apt-get update, यह एक और कमांड चलाता था लेकिन उपयोग करते हुए काफी मेमोरी apt-get -s -o Debug::NoLocking=true upgrade

कुछ अन्य चीजें चल सकती हैं apt-get update(लेकिन शायद नहीं चलती check-apt)

  • check_aptpkg को अपडेट / अपग्रेड करने के लिए तर्क पास करना।
  • यदि कॉन्फ़िगर किया गया है, तो /etc/cron.daily/aptपैकेज सूची को अपडेट किया जा सकता है, भी देखें ( https://help.ubuntu.com/lts/serverguide/automatic-updates.html ), लेकिन यह सिर्फ एक दिन में एक बार चलता है, और समस्या नहीं होनी चाहिए।

एक डेस्कटॉप पर, अधिक चीजें शामिल हो सकती हैं।

समापन: byobuजब आप apt-get updateइन check-aptप्रक्रियाओं को चलाते हैं और ट्रिगर करते हैं, तो इसे byobuठीक करने के लिए स्टेटस बार को फिर से कॉन्फ़िगर करके इवेंट को पकड़ता है ।

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