Ми починаємо шукати Ansible для заміни старої установки cfengine2. У мене є проста книжка, яка:
- копіює файл судорів
- копіює шаблонні зображення resv.conf (подається з даними group_vars та host_vars)
- перевіряє запуску пари служб
- перевіряє наявність місцевого користувача
У програмі триває 4 хвилини настінного годинника для роботи з 97 машинами (всі підключені через швидку мережу на 1 або 10 г, з затримкою локальної мережі під-1 мс) і споживають понад 50% процесора на 2-ядерній 4G пам'яті VM, коли я працює його.
Для роботи на одній машині потрібно близько 11 секунд, при цьому витрачається близько 4 секунд CPU користувача + sys, який TBH все ще здається трохи надмірним за обсяг роботи.
Очевидні біти:
- У моєму конвеєрі явно ввімкнено місце в програмі playbook-dir local ansible.cfg
- У мене ввімкнено кешування на jsonfile, такий же локальний ansible.cfg
- У мене вилки встановлені на 50, те саме (я спробував інші значення)
- Я впевнений, що Ansible використовує SSH, а не Paramiko, а він використовує стійкий керуючий гніздо - я бачу, як процеси SSH починаються та зберігаються під час запуску.
Це рівень продуктивності нормальний чи щось не в моєму налаштуванні? Як я можу вирішити, що робити, якщо так?
Редагувати: Станом на серпень 2017 року ми все ще спостерігаємо цю проблему. Відповідна версія - 2.2.1, і розмір ігрової книги тепер збільшився. Актуальні номери:
- 98 господарів
ansible -m ping all
займає 4,6s реального, 3,2s користувача, 2,5s sys разів- повний запуск програвача займає 4 хвилини, використовуючи 100% користувачів та ~ 35% системного процесора, роблячи це (для двоядерного розгортання VM, 100% - одного повного процесора)
- цільова ОС значною мірою 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, і не відновиться, то у вас є визначене питання ентропії голоду. (поширений у деяких середовищах VM). Це стосується вашого сервера управління, а також вузлів, якими ви керуєте.
ansible -i all all -m ping
проти понад 300 господарів (в основному VM) зайняли досить менше 1 хвилини. Чи робить Ваша книжка для читання щось, щоб змінити користувача (стати / судо / тощо). Що таке "-m ping"? На основі досвіду я б сказав, що ви хочете мати більше пам’яті на 50 вил.
ANSIBLE_CALLBACK_WHITELIST=profile_tasks
і для більш ретельного налагодженняANSIBLE_DEBUG=1
. Також зверніть пильну увагу на початковій швидкості з'єднання ssh.