首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么ansible慢于简单的任务

为什么ansible慢于简单的任务
EN

Stack Overflow用户
提问于 2022-03-21 23:39:11
回答 2查看 1.8K关注 0票数 4

在使用了大约一周的ansible之后,我发现ansible所花费的时间和它应该完成的任务有多复杂,花费的时间也差不多。

  • 使用apt -3秒
  • 安装20个软件包,使用模板复制一个具有2个配置设置的文件-3秒。

虽然我可以使用一个命令轻松地安装20个软件包,

模板需要在循环中运行,所以如果我有20个配置文件要复制,那么需要花费整整一分钟。

将其扩展到10个角色,其中一些角色重复了5次,您可以获得超过一个小时的时间来完成简单的部署。

ansible应该是这么慢,还是我可以做些什么来提高表演水平?

编辑:

根据你的回答,我认为这不是正常的行为。以下是@U880D所要求的一些简单任务的代码示例。正如我所说,没有什么特别的只是简单的吐露:

代码语言:javascript
复制
# tasks/main.yml

- name: Configure php-{{ php_version }}
  template:
    src: '{{ item }}.j2'
    dest: '/etc/php/{{ php_version }}/{{ item }}'
  loop:
    - cli/conf.d/50-memory.ini
    - fpm/conf.d/50-memory.ini
    - fpm/conf.d/50-opcache.ini
    - fpm/pool.d/www.conf
  notify:
    - restart php {{ php_version }}
代码语言:javascript
复制
# templates/fpm/conf.d/50-memory.ini.j2

memory_limit = {{ php_fpm_memory_limit }}
post_max_size = {{ php_fpm_post_max_size }}
upload_max_filesize = {{ php_fpm_upload_max_filesize }}
max_file_uploads = {{ php_fpm_max_file_uploads }}
代码语言:javascript
复制
# templates/fpm/conf.d/50-opcache.ini.j2

[opcache]
opcache.enable=1
opcache.memory_consumption={{ php_opcache_memory_limit }}
opcache.validate_timestamps=1
opcache.revalidate_freq=1
opcache.huge_code_pages=1

edit2:

我不确定这是否是task_profile应该做的,但是下面是这个命令在服务器上的输出,名为management-1。之后,我添加了一个调试任务,以获得精确的时间。甚至不需要更新的4个模板使用了~7.3 s:

代码语言:javascript
复制
TASK [php : Configure php-8.1] ************************************************************************************************************************************************************************************
Tuesday 22 March 2022  10:17:33 +0100 (0:00:02.730)       0:00:06.616 ********* 
ok: [management-1] => (item=cli/conf.d/50-memory.ini)
ok: [management-1] => (item=fpm/conf.d/50-memory.ini)
ok: [management-1] => (item=fpm/conf.d/50-opcache.ini)
ok: [management-1] => (item=fpm/pool.d/www.conf)

TASK [php : Debug] ************************************************************************************************************************************************************************************************
Tuesday 22 March 2022  10:17:40 +0100 (0:00:07.308)       0:00:13.924 ********* 
EN

回答 2

Stack Overflow用户

发布于 2022-06-14 09:40:41

你说得对,Ansible是慢的(就像地狱一样)。这是故意的。他们决定通过ssh将python代码复制到远程主机以执行操作:

network.

  • processes

  • 代码需要base64编码/解码- CPU负载/时间/臃肿的

  • 广泛地

循环中的每个项都作为一个单独的任务执行。

放松点喝咖啡。或者更新你的ansible.cfg并祈祷:

代码语言:javascript
复制
[ssh_connection]
pipelining = True

[defaults]
nocows = True
interpreter_python = /usr/bin/python3
gathering = False
forks = 2
strategy = free
票数 1
EN

Stack Overflow用户

发布于 2022-04-13 07:36:31

我们刚刚从ansible 2.7.7切换到了2.10.7,而且template任务似乎特别慢了很多,以至于整个剧本所用的时间是以前的两倍。

我怀疑这是ansible中的一个bug,需要跟踪和修复(尽管我必须检查它是否在最近版本的ansible中得到了实际修复)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71565392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档