เราเริ่มมองหา Ansible เพื่อแทนที่การติดตั้ง cfengine2 แบบเก่า ฉันมี playbook ง่ายๆที่:
- คัดลอกไฟล์ sudoers
- คัดลอก templated resolv.conf (ป้อนด้วย group_vars และข้อมูล host_vars)
- ตรวจสอบบริการสองอย่างที่กำลังทำงานอยู่
- ตรวจสอบการมีอยู่ของผู้ใช้ท้องถิ่น
playbook ใช้เวลา wallclock นานกว่า 4 นาทีในการรันกับเครื่อง 97 เครื่อง (เชื่อมต่อผ่านเครือข่าย 1gig หรือ 10gig ที่รวดเร็วด้วยความหน่วงแฝงของ LAN ย่อย 1 มิลลิวินาที) และใช้ซีพียูกว่า 50% บน VM 2-core memory VM เมื่อฉัน ใช้มัน
ใช้เวลาประมาณ 11 วินาทีในการทำงานกับเครื่องเดียวโดยใช้เวลาประมาณ 4sec ของ user + sys CPU ซึ่ง TBH ยังดูเหมือนว่าจะมากเกินไปสำหรับปริมาณงานที่เกี่ยวข้อง
บิตที่ชัดเจน:
- ฉันเปิดใช้งาน Piping อย่างชัดเจนใน playbook-dir local ansible.cfg
- ฉันมีความจริงแคชเพื่อ jsonfile เปิดใช้งาน ansible.cfg ท้องถิ่นเดียวกัน
- ฉันส้อมตั้งไว้ที่ 50 เหมือนกัน (ฉันได้ลองค่าอื่น ๆ แล้ว)
- ฉันแน่ใจว่า Ansible กำลังใช้ SSH ไม่ใช่ Paramiko และใช้ซ็อกเก็ตการควบคุมแบบถาวร - ฉันสามารถเห็นกระบวนการ SSH ที่เริ่มต้นและคงอยู่ในระหว่างการรัน
ระดับประสิทธิภาพนี้ปกติหรือผิดปกติกับการตั้งค่าของฉันหรือไม่ ฉันจะไปพิจารณาเกี่ยวกับอะไรถ้าเป็นเช่นนั้น?
แก้ไข: เมื่อวันที่สิงหาคม 2017 เรายังคงพบปัญหานี้ Ansible version 2.2.1 และขนาดของ playbook ได้เติบโตขึ้นแล้ว หมายเลขล่าสุด:
- 98 โฮสต์
ansible -m ping all
ใช้เวลาจริง 4.6 วินาทีผู้ใช้ 3.2 วินาที 2.5 ครั้งระบบ- การเรียกใช้ playbook แบบเต็มใช้เวลา 4 นาทีโดยใช้ผู้ใช้ 100% และ CPU ระบบ ~ 35% ในขณะที่ทำ (ในการปรับใช้ VM แบบ 2 คอร์ 100% เป็น CPU แบบเต็มหนึ่งเครื่อง)
- ระบบปฏิบัติการเป้าหมายเป็นส่วนใหญ่ CentOS 7 บาง CentOS 6
- การทำโปรไฟล์ไม่เปิดเผยฮอตสปอตของงาน specifc ใด ๆ AFAICT
ถึงแม้ว่าตอนนี้ playbook จะใหญ่กว่ามาก แต่ฉันก็ยังไม่คิดว่าจะมีเหตุผลอะไรที่จะพิสูจน์ระดับของการโหลดซีพียูในเซิร์ฟเวอร์ playbook - เวลา wallclock บางที แต่เซิร์ฟเวอร์การปรับใช้นั้นจะไม่ได้ทำงานเป็นส่วนใหญ่ เท่าที่ฉันเห็นส่วนใหญ่เป็นไฟล์คัดลอกและขยายเทมเพลต
โปรดทราบว่าเราใช้โฮสต์ / กลุ่มกลุ่มอย่างกว้างขวาง
มีหลายคนถามเกี่ยวกับการทำโปรไฟล์หางวิ่งด้วยการทำโปรไฟล์:
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
ในขณะที่ playbook ทำงาน หากน้อยกว่า 1,000 คำคุณมีปัญหาที่อาจเกิดขึ้น; ถ้ามันน้อยกว่าที่บอกว่า 64 และไม่สามารถกู้คืนได้กว่าที่คุณมีปัญหาความอดอยากเอนโทรปีแน่นอน (พบได้ทั่วไปในบางสภาพแวดล้อม VM) สิ่งนี้ใช้กับเซิร์ฟเวอร์การจัดการของคุณและโหนดที่คุณกำลังจัดการ
ansible -i all all -m ping
เทียบกับโฮสต์กว่า 300 (ส่วนใหญ่เป็น VM) ใช้เวลาน้อยกว่า 1 นาที Playbook ของคุณทำอะไรเพื่อเปลี่ยนผู้ใช้ (กลายเป็น / sudo / ฯลฯ ) '-m ping' มีลักษณะอย่างไร ตามประสบการณ์บอกว่าคุณต้องการมีหน่วยความจำมากกว่า 50 ส้อม
ANSIBLE_CALLBACK_WHITELIST=profile_tasks
ANSIBLE_DEBUG=1
ให้ความสนใจอย่างใกล้ชิดที่ความเร็วการเชื่อมต่อ ssh เริ่มต้น