我们开始看Ansible来replace旧的cfengine2安装。 我有一个简单的手册:
剧本需要花费4分钟的挂钟时间才能运行在97台机器上(全部通过快速1gig或10gignetworking连接,局域网延迟低于1ms),并且占用2核4G内存虚拟机超过50%的CPU运行它。
在一台机器上运行需要大约11秒钟的时间,耗费大约4秒的用户+系统CPU时间,这对于所涉及的工作量而言,TBH仍然有点过分。
显而易见的一点:
这种性能水平是正常的还是我的设置有问题? 如果可以的话,我怎么去决定呢?
编辑:截至2017年8月,我们仍然看到这个问题。 Ansible版本是2.2.1,剧本的大小已经增长了。 最新的数字:
尽pipe现在剧本已经大了很多,但我仍然认为没有什么可以certificatePlaybook服务器上的CPU负载水平 – 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
在你的ansible.cfg设置如下:
[defaults] # profile each task callback_whitelist = profile_tasks # [don't validate host keys](http://docs.ansible.com/ansible/intro_configuration.html#host-key-checking) host_key_checking = False [ssh_connection] pipelining = True
另外,在你的剧本中,将策略设置为“免费”
- hosts: all strategy: free tasks: [...]
最后,在你的游戏中禁用事实聚集: gather_facts: false
如果分析后,你看到很多这样的:
TASK [pip foo] ok: [10.192.197.252] => (item=ansible) ok: [10.192.197.252] => (item=boto) ok: [10.192.197.252] => (item=boto3) ok: [10.192.197.252] => (item=passlib) ok: [10.192.197.252] => (item=cryptography)
在[defaults]下ansible.cfg动作:
例如squash_actions = yum,pip,bar