【发布时间】:2022-06-14 17:40:41
【问题描述】:
在使用 ansible 大约一周后,我发现 ansible 花费的时间差不多,无论它应该执行的任务有多复杂。
- 使用 apt 安装 20 个软件包 - 3 秒
- 使用模板复制具有 2 个配置设置的单个文件 - 3 秒。
虽然我可以使用一个命令轻松安装 20 个软件包,但
模板需要循环运行,所以如果我要复制 20 个配置文件,则需要一整分钟。
将其扩展到 10 个角色, 其中一些重复了5次 你可以花一个多小时来做一个简单的部署。
ansible 应该这么慢, 或者我可以做些什么来提高性能?
编辑:
根据您的回答,我认为这不是正常行为。
以下是@U880D 要求的那些简单任务的一些代码示例。
正如我所说,没有什么特别的,只是简单的配置:
# 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 }}
# 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 }}
# 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
编辑2:
我不确定这是否是 task_profile 应该做的,但这里是该命令在名为 management-1 的服务器上的输出。
我在获得准确的时间之后添加了一个调试任务。 4 个甚至不需要更新的模板耗时约 7.3 秒:
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 *********
【问题讨论】:
-
您需要更多数据才能了解发生了什么。尝试回调
profile_tasks和profile_roles。如果这没有帮助,您可以从ansible-runnerartifacts 获取更多详细信息。 -
能否提供相关任务的源代码?关于“Ansible 应该这么慢,还是我可以做些什么来提高性能?”,没有任何相关信息,这里无法回答。
标签: ansible