2017-02-23 15 views
8

हमने LocalExecutor का उपयोग करके हमारे ईटीएल के लिए एयरबिन/अपाचे एयरफ्लो सेट अप किया है, और जैसा कि हमने अधिक जटिल डीएजी बनाने शुरू कर दिए हैं, हमने देखा है कि एयरफ्लो ने सिस्टम संसाधनों की अविश्वसनीय मात्रा का उपयोग करना शुरू कर दिया है । यह हमारे लिए आश्चर्यजनक है क्योंकि हम ज्यादातर एयरफ्लो का उपयोग अन्य सर्वरों पर होने वाले कार्यों को ऑर्केस्ट्रेट करने के लिए करते हैं, इसलिए एयरफ्लो डीएजी अपना अधिकांश समय पूरा करने के लिए इंतजार कर रहे हैं - स्थानीय रूप से ऐसा कोई वास्तविक निष्पादन नहीं होता है।एयरबर्न एयरफ्लो सभी सिस्टम संसाधनों का उपयोग

सबसे बड़ी समस्या यह है कि एयरफ्लो हर समय 100% CPU का उपयोग करता है (एडब्लूएस टी 2.मेडियम पर), और डिफ़ॉल्ट एयरफ्लो सीएफजी सेटिंग्स के साथ 2 जीबी मेमोरी का उपयोग करता है।

यदि प्रासंगिक है, तो हम कंटेनर को दो बार चलाने वाले डॉकर-कंपोज़ का उपयोग करके एयरफ्लो चला रहे हैं; एक बार scheduler और एक बार webserver के रूप में।

हम यहां क्या गलत कर रहे हैं? क्या यह सामान्य है?

संपादित करें: Htop Htop2

मैं सिद्धांत रूप में लगता है: यहाँ इस्तेमाल किया (के बाद से है कि अब मुख्य मुद्दा हो रहा है, मैं सीपीयू उतर गया) htop से उत्पादन,% मेमोरी द्वारा आदेश दिया है मैं बंदूकधारी श्रमिकों की संख्या को कम कर सकता हूं (यह 4 के डिफ़ॉल्ट पर है), लेकिन मुझे यकीन नहीं है कि /usr/bin/dockerd प्रक्रियाएं क्या हैं। यदि डॉकर चीजों को जटिल बना रहा है तो मैं इसे हटा सकता हूं, लेकिन यह बदलावों की तैनाती को वास्तव में आसान बना दिया गया है और यदि संभव हो तो मैं इसे हटा नहीं दूंगा।

+0

क्या आपने 'CeleryExecutor' की कोशिश की है? – salient

+0

हां, लेकिन मुझे 'CeleryExecutor' की कोई आवश्यकता नहीं है - हम कुछ भी नहीं कर रहे हैं जिसे निष्पादित करने के लिए वितरित सर्वर की आवश्यकता होनी चाहिए। – jdotjdot

+0

हाय @jdotjdot, मुझे एक ही समस्या है, आप सीपीयू को कैसे नीचे ले गए? धन्यवाद – Joyce

उत्तर

1

स्टार्टर्स के लिए, आप अपने CPU उपयोग की निगरानी और डिबग करने के लिए htop का उपयोग कर सकते हैं।

मैं सुझाव दूंगा कि आप उसी डॉकर कंटेनर पर वेबसर्वर और शेड्यूलर प्रक्रियाएं चलाएं जो ec2 t2.medium पर दो कंटेनरों को चलाने के लिए आवश्यक संसाधनों को कम करेगा। एयरफ्लो श्रमिकों को डेटा डाउनलोड करने और इसे स्मृति में पढ़ने के लिए संसाधनों की आवश्यकता होती है लेकिन वेबसर्वर और शेड्यूलर बहुत हल्के प्रक्रियाएं हैं। यह सुनिश्चित करता है कि जब आप वेबसर्वर चलाते हैं तो आप क्ली का उपयोग करके उदाहरण पर चल रहे श्रमिकों की संख्या को नियंत्रित कर रहे हैं।

airflow webserver [-h] [-p PORT] [-w WORKERS] 
         [-k {sync,eventlet,gevent,tornado}] 
         [-t WORKER_TIMEOUT] [-hn HOSTNAME] [--pid [PID]] [-D] 
         [--stdout STDOUT] [--stderr STDERR] 
         [-A ACCESS_LOGFILE] [-E ERROR_LOGFILE] [-l LOG_FILE] 
         [-d] 
+0

पर धन्यवाद। पहले 'htop' की जांच की थी; मैंने उसी कंटेनर में 'वेबसर्वर' और' शेड्यूलर 'चलाने शुरू कर दिया, फिर से जांच की और जो भी मैं देख रहा हूं उसके स्क्रीनशॉट जोड़े। बहुत सारी प्रक्रियाएं चल रही हैं, जिनमें से सभी ~ 2% मेमोरी ले रहे हैं। अभी भी मेरे लिए कुछ हद तक लगता है। – jdotjdot

+0

हाँ जैसा कि मैंने अपनी प्रतिक्रिया में उल्लेख किया है 'airflow webserver -w 1' आज़माएं। यह केवल आपके 'वेबसर्वर' और' शेड्यूलर 'चलाने वाले कंटेनर पर एक कार्यकर्ता प्रक्रिया बनाएगा।~ 2% स्मृति कुछ ऐसा है जो मुझे बहुत यकीन नहीं है। – nehiljain

3

मैं बस इस तरह के एक मुद्दे में भाग गया। एयरफ्लो एक t2.xlarge उदाहरण में मोटे तौर पर एक पूर्ण वीसीपीयू का उपभोग कर रहा था, जिसमें से अधिकांश शेड्यूलर कंटेनर से आ रहा था। शेड्यूलर लॉग की जांच करके, मैं देख सकता था कि यह एक बार एक बार से अधिक मेरे एकल डीएजी को संसाधित कर रहा था, भले ही यह दिन में केवल एक बार चलता है। मैंने पाया कि MIN_FILE_PROCESS_INTERVAL को 0 के डिफ़ॉल्ट मान पर सेट किया गया था, इसलिए शेड्यूलर डीएजी पर लूपिंग कर रहा था। मैंने प्रक्रिया अंतराल को 65 सेकंड में बदल दिया, और एयरफ्लो अब एक t2.medium उदाहरण में एक vCPU के 10 प्रतिशत से कम का उपयोग करता है।

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