点燃式发动机和压燃式发动机_糟糕的性能:提升发动机并保持稳定性

点燃式发动机和压燃式发动机

Ansible是围绕配置和业务流程管理为中心的自动化工具。 许多系统管理员和工程师在使用Ansible时需要意识到的一件事是如何对其进行优化以提高其速度和性能。 这里有一些提示和技巧。

使用SSH进行多路复用

从高层次上讲,SSH有两点需要担心:建立与主机的新连接所花费的时间以及使用该连接时所经历的等待时间。 Ansible在主机上执行的每个任务将为每个主机创建到该主机的SSH连接 。 如果建立该连接有一些延迟,则该延迟将与您要操作的任务数量加在一起。 为了帮助解决此问题,可以使用主机的SSH控制套接字进行多路复用。 如果建立了一个连接(并保持打开状态),则随后的连接可以使用套接字,并大大减少了建立这些连接所花费的时间。

控制持久性是SSH的一项功能,它允许已建立的控制套接字在其最后一次使用后停留一段时间。 这样就可以使用控制套接字,而不必显式建立使用该套接字的长期连接。 启用控制套接字/持久性后,与主机的第一个连接将建立套接字,该套接字将持续一段时间。

持续时间应该足够长,以使剧本中的后续任务仍然可以使用套接字,但是不要太长而不会留下过时的处理程序。 每个持久性连接都会消耗内存,该内存乘以清单中的主机数。

更改或修改的ssh_connectioncontrolpersist可以进行的全球Ansible配置文件(/etc/ansible/ansible.cfg)中,也可以代替创建自己的ansible.cfg文件。

启用S​​SH流水线

SSH 管道传输不同但相关。 它比SSH功能更多是Ansible功能。 默认情况下,当Ansible使用SSH和类似SSH的连接插件时,对于每个任务,它将多次SSH到目标主机。 详细信息无关紧要,但是请记住,如果您有连接开销,则每个任务有多个连接会增加更多的延迟。

启用流水线功能后,它将建立与目标的单个连接,并通过该连接远程执行模块。 同样,细节并不重要,您只需要知道许多连接都简化为单个连接。 默认情况下未启用它,主要是因为它需要在目标主机上进行额外的配置才能使用sudo (必须禁用requiretty )。

分叉Ansible

关于Ansible的最好的事情之一是它可以跨多个主机并行运行。 它一次可以操作的主机数量取决于多个因素。 最大的因素是forks参数。 此参数的默认值为5,这将限制Ansible一次只能在五台主机上运行。 第二个因素是游戏中目标主机的数量。 如果比赛以四位主持人为目标,那么分叉设置为5、50或500无关紧要; Ansible仍将仅针对四个主机。 值得庆幸的是,您不必担心分叉开销,也不必为主机分配足够的分叉。 给定目标主机,Ansible将仅生成所需数量的分叉 。 将分叉设置为500并具有四个主机的目标,将导致四个分叉。

与目标主机相关的另一个重要因素是游戏的设置。 如果将播放设置为使用“ 串行 ”模式,则可以配置批处理大小。 这是将批处理并在播放中运行的最大主机数。 (请注意,该批处理中的所有主机都在下一个批处理运行之前运行该播放。)可以将批处理大小设置为比派生大小小得多,并且最小的数字将赢得并行性。

在管理大型车队时,可能需要配置分叉以维持100多个Ansible货叉。 当涉及到性能和容量时,您可能会遇到问题,例如内存和CPU的限制。 在处理越来越多的数字时,您可能要考虑的一件事是对下游的负面影响-因为要求系统数量来完成一项任务可能会带来问题。 例如,要求300-500个系统完成一项任务,例如即使从单个来源获取文件,也可能耗尽该资源,从而导致故障。

您需要事实收集吗?

事实收集本质上是一项不成文的任务。 在每次播放开始时将其打开(默认设置)时,每台主机将获得一项任务以从中收集事实。 这些事实将成为hostvars 。 如果您需要此信息,这很有用,但确实需要时间。 我建议您关闭事实收集,除非您依赖这些事实。 这是因为收集事实会占用大量资源,而且非常非常缓慢; 每台主机三秒钟或更长时间。 例如,如果您有100个主机和50个分叉,那将是20 * 3s(或一分钟),只是为了收集事实。 如果您不使用事实,这会浪费时间。 您可以通过添加以下代码行将未设置事实的剧本设置为collect_facts:no

collect_facts:no之前,剧本花了5.39秒,外加0.24秒来执行创建文件的任务。 在添加行collect_facts:no之后 ,剧本在0.24秒内完成。

异步并发任务

异步任务参数很有趣。 一旦任务运行,它将导致Ansible关闭连接。 在一定间隔后,Ansible将重新建立连接,以查看任务是否已完成。 这可以是尽可能快地得到一个大的舰队在任务的所有工作很有用。 但是,这也会增加连接数,因为Ansible会经常重新连接以检查状态。 如果将此频率设置得较低,则可能会使主机处于闲置状态并且闲置,最后等待频率计时器运行以使Ansible重新签入。我还要提到Ansync的即发即忘功能,并在Ansible中检查以后的功能。 进行长时间运行的后台任务很有用,您最终将要在以后进行检查。 (注意:此功能需要Ansible 1.8或更低版本。)

在/etc/ansible/ansible.cfg中所做的更改,尽管您可以将其添加到实际的剧本中。

使用拉动模式检查更改

拉模式是提高效率的另一种策略。 如上所述,我遇到的限制之一是Ansible控制主机管理500多个fork的能力。 拉模式( Ansible-Pull插件 )是一种在整个机队中分散处理需求的方法。 仅当您不需要完成任务的集中协调时,此方法才有效。 如果您的用例可以容忍最终的一致性,那么您可以在Git存储库中发布剧本,并让主机上的Ansible定期检查剧本的更改。 找到更改后,主机可以执行剧本。

结语

我希望您现在对Ansible的速度和效率有更多的了解。 有多种方法可以提高Ansible的性能,您应该根据自己的需求以及当前的配置或设置来探索它们。

翻译自: https://opensource.com/article/19/3/ansible-performance

点燃式发动机和压燃式发动机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值