हम एक पुरानी cfengine2 स्थापना को बदलने के लिए Ansible को देखना शुरू कर रहे हैं। मेरे पास एक सरल प्लेबुक है:
- एक sudoers फ़ाइल की प्रतिलिपि बनाता है
- प्रतियां एक अस्थायी resolv.conf (group_vars और host_vars डेटा के साथ खिलाया)
- कुछ सेवाओं की जाँच चल रही है
- एक स्थानीय उपयोगकर्ता की उपस्थिति के लिए जाँच
97 से अधिक मशीनों (सभी उपवास 1gig या 10gig नेटवर्किंग से जुड़ी, उप -1ms LAN विलंबता के साथ) चलाने के लिए प्लेबुक 4 मिनट से अधिक का समय लेता है और 2-कोर 4 जी मेमोरी वीएम पर 50% से अधिक सीपीयू खपत करता है। इसे चला रहे हैं।
एक मशीन के खिलाफ चलने में लगभग 11 सेकंड लगते हैं, लगभग 4 %ecec उपयोगकर्ता के साथ + sys CPU समय लगता है, जिसमें टीबीएच अभी भी शामिल काम की मात्रा के लिए थोड़ा अधिक लगता है।
स्पष्ट बिट्स:
- मेरे पास प्लेबुक-डीआईआर स्थानीय ansible.cfg में स्पष्ट रूप से सक्षम पाइपलाइनिंग है
- मेरे पास jsonfile को सक्षम करने के लिए तथ्य कैशिंग है, वही स्थानीय ansible.cfg
- मेरे पास 50 पर सेट कांटे हैं, मैंने (मैंने अन्य मूल्यों की कोशिश की है)
- मुझे यकीन है कि एंसिबल SSH नहीं Paramiko का उपयोग कर रहा है और यह लगातार नियंत्रण सॉकेट का उपयोग कर रहा है - मैं देख सकता हूँ कि SSH प्रक्रियाएं शुरू हो रही हैं और रन के दौरान बनी रहती हैं।
क्या प्रदर्शन का यह स्तर सामान्य है या मेरे सेटअप में कुछ गड़बड़ है? मैं यह निर्धारित करने के बारे में कैसे जा सकता हूं कि यदि हां, तो क्या होगा?
संपादित करें: अगस्त 2017 तक, हम अभी भी इस समस्या को देख रहे हैं। अस्थिर संस्करण 2.2.1 है और प्लेबुक का आकार अब बड़ा हो गया है। अप-टू-डेट नंबर:
- 98 मेजबान
ansible -m ping all
4.6s वास्तविक, 3.2s उपयोगकर्ता, 2.5 ss बार लेता है- 100% उपयोगकर्ता और ~ 35% सिस्टम CPU का उपयोग करते हुए एक पूर्ण प्लेबुक रन में 4 मिनट लगते हैं (2-कोर VM परिनियोजन गंभीर होने पर, 100% एक पूर्ण CPU हो रहा है)
- लक्ष्य OS काफी हद तक CentOS 7, कुछ CentOS 6 है
- प्रोफाइलिंग किसी भी विशिष्ट कार्य हॉटस्पॉट AFAICT को प्रकट नहीं करता है
हालाँकि, प्लेबुक अब बहुत बड़ी हो गई है, फिर भी मुझे नहीं लगता कि प्लेबुक सर्वर पर सीपीयू लोड के उस स्तर को सही ठहराने के लिए कुछ भी है - वॉलकॉक टाइम, शायद, लेकिन तैनाती का सर्वर अधिकतर रन के लिए निष्क्रिय होना चाहिए, जहाँ तक मैं देख सकता हूँ, यह ज्यादातर फ़ाइल प्रतियां और कुछ टेम्पलेट विस्तार है।
ध्यान दें कि हम मेजबान / समूहवार का काफी व्यापक उपयोग कर रहे हैं
कई लोगों ने प्रोफाइलिंग के बारे में पूछा है, प्रोफाइलिंग के साथ रन की पूंछ:
Tuesday 01 August 2017 16:02:24 +0100 (0:00:00.539) 0:06:22.991 ********
===============================================================================
yumrepo : centos repos -------------------------------------------------- 9.77s
sshd : copy CentOS 6 sshd config ---------------------------------------- 7.41s
sshd : copy CentOS 7 sshd config ---------------------------------------- 6.94s
core : ensure core packages are present --------------------------------- 6.28s
core : remove packages on VM guests ------------------------------------- 5.39s
resolv : stop NetworkManager changing resolv.conf ----------------------- 5.25s
yumrepo : epel6 gpg key ------------------------------------------------- 3.94s
yumrepo : epel7 gpg key ------------------------------------------------- 3.71s
yumrepo : nsg gpg key --------------------------------------------------- 3.57s
resolv : build resolv.conf ---------------------------------------------- 3.30s
yumrepo : nsg repo ------------------------------------------------------ 2.66s
resolv : check NetworkManager running ----------------------------------- 2.63s
yumrepo : psp repo ------------------------------------------------------ 2.62s
yumrepo : ucs repo ------------------------------------------------------ 2.44s
yumrepo : epel repo ----------------------------------------------------- 2.27s
resolv : check for nmcli ------------------------------------------------ 2.08s
core : remove various unwanted files ------------------------------------ 1.42s
telegraf : write telegraf.conf file ------------------------------------- 1.13s
core : copy sudoers in place -------------------------------------------- 0.94s
core : ensure sshd is running ------------------------------------------- 0.90s
watch cat /proc/sys/kernel/random/entropy_avail
जबकि प्लेबुक चल रही है। यदि इसका 1000 से कम कहना आपके लिए संभावित मुद्दा है; यदि इसका कम से कम 64 कहना और ठीक नहीं होता है, तो आपके पास एक निश्चित एंट्रॉपी भुखमरी का मुद्दा है। (कुछ वीएम वातावरण में आम)। यह आपके प्रबंधन सर्वर और आपके द्वारा प्रबंधित किए जा रहे नोड्स पर भी लागू होता है।
ansible -i all all -m ping
300 से अधिक मेजबानों (ज्यादातर वीएम) के मुकाबले 1 मिनट से भी कम समय लगा। क्या आपकी प्लेबुक उपयोगकर्ता को बदलने के लिए कुछ भी कर रही है (बन / sudo / आदि)। --म पिंग ’कैसा प्रदर्शन करता है? मैं अनुभव के आधार पर कहूंगा कि आप 50 फोर्क के लिए अधिक मेमोरी चाहते हैं।
ANSIBLE_CALLBACK_WHITELIST=profile_tasks
और अधिक गहन डिबगिंग के लिए कुछ रूपरेखा बनाएंANSIBLE_DEBUG=1
। प्रारंभिक ssh- कनेक्शन की गति पर भी पूरा ध्यान दें।