个人名片:
因为云计算成为了监控工程师‍
个人博客:念舒_C.ying
CSDN主页️:念舒_C.ying

优化⼀: 开启SSH长连接

Ansible模式是使⽤SSH和远程主机进⾏通信, 所以Ansible对SSH的依赖性⾮常强, 在OpenSSH 5.6版本以后SSH就⽀持了Multiplexing, 关于这个特性我们可以参考 Multiplexing⼿册. 所以如果Ansible中控机的SSH -V版本⾼于5.6时, 我们可以直接在ansible.cfg⽂件中设置SSH⻓连接, 设置参数如下:

ssh_args = -C -o ControlMaster=auto -o ControlPersist=5d

ConrolPersist=5d, 这个参数是设置整个⻓连接保持时间为5天.
开启此参数后, 通过SSH连接过的设备都会在当前ansible/cp/⽬录下⽣成⼀个socket⽂件. 也可以通过netstat命令查看, 会发现有⼀个ESTABLISHED状态的连接⼀直与远程设备进⾏着TCP连接

netstat -anptu

优化二: 开启Pipelining

pipelining也是OpenSSH的⼀个特性, 在Ansible的整个执⾏流程中, 把⽣成好的本地python脚本PUT到远程服务器. 如果开启了pipelining, 这个过程将在SSH会话中进⾏, 这样可以⼤⼤提⾼整个执⾏效率. 当然开启pipelining, 需要被控机/etc/sudoers⽂件编辑当前Ansible SSH⽤户的配置为requiretty.否则在执⾏Ansible的时候会提示报错

bavdu@ansible:~$ sudo vim /etc/ansible/ansible.cfg
pipelining = True

这样开启了pipelining之后, ansible执⾏的整个流程就少了⼀个PUT脚本去远程服务端的流程

优化三: 开启accelerate模式

Ansible还有⼀个accelerate模式, 这和前⾯的Multiplexing有点类似, 因为都依赖Ansible中控机跟远程机器有⼀个⻓连接. 但是accelerate是使⽤python程序在远程机器上运⾏⼀个守护进程, 然后Ansible会通过这个守护进程监听的端⼝进⾏通信. 开启accelerate模式很简单, 只要在playbook中配置accelerate: true即可.
但是需要注意的是: 如果开启accelerate模式, 则需要在Ansible中控机与远程机器都安装pythonkeyczar软件包. 下⾯是在ansible.cfg⽂件中定义⼀些accelerate参数, 当然也可以在写playbook的时候再定义

[accelerate]
accelerate_port = 5099
accelerate_timeout = 30
accelerate_connect_timeout = 5.0

优化四: 设置facts缓存

如果细⼼的话, 就会发现执⾏playbook的时候, 默认第⼀个task都是GATHERING FACTS, 这个过程就是Ansible在收集每台主机的facts信息. ⽅便我们在playbook中直接饮⽤facts⾥的信息. 当然如果你的playbook中不需要facts信息, 可以在playbook中设置gather_facts: False来提⾼playbook效率.
但是如果我们既想在每次执⾏playbook的时候都能收集facts, ⼜想加速这个收集过程, 那么就需要配置facts缓存了. ⽬前Ansible⽀持使⽤json⽂件存储facts信息. 如下设置示例:/etc/ansible/ansible.cfg

gathering = smart
fact_caching_timeout = 86400
fact_caching = jsonfile
fact_caching_connection = /dev/shm/ansible_fact_cache

期待下次的分享,别忘了三连支持博主呀~
我是 念舒_C.ying ,期待你的关注~

Ansible执⾏速度优化的更多相关文章

  1. Ansible管理上千台主机时需要的速度优化

    1 开启ssh长连接 OpenSSH 5.6版本后SSH支持了Multiplexing 设置参数 ssh_args = -C -o ControlMaster=auto -o ControlPersi ...

  2. dWebpack编译速度优化实战

    当你的应用的规模还很小时,你可能不会在乎Webpack的编译速度,无论使用3.X还是4.X版本,它都足够快,或者说至少没让你等得不耐烦.但随着业务的增多,嗖嗖嗖一下项目就有上百个组件了,也是件很简单的 ...

  3. [转]Asp.net mvc 网站之速度优化 -- 页面缓存

    网站速度优化的一般方法 由于网站最重要的用户体验就是速度,特别是对于电子商务网站而言. 一般网站速度优化会涉及到几个方面: 1. 数据库优化 — 查询字段简历索引,使用数据库连接池和持久化,现在还有种 ...

  4. web访问速度优化分析

    请求从发出到接收完成一共经历了DNS Lookup.Connecting.Blocking.Sending.Waiting和Receiving六个阶段,时间共计38ms.请求完成之后是DOM加载和页面 ...

  5. Tone Mapping算法系列二:一种自适应对数映射的高对比度图像显示技术及其速度优化。

    办公室今天停电,幸好本本还有电,同事们好多都去打麻将去了,话说麻将这东西玩起来也还是有味的,不过我感觉我是输了不舒服,赢了替输的人不舒服,所以干脆拜别麻坛四五年了,在办公室一个人整理下好久前的一片论文 ...

  6. ansible系列5-开启加速 Ansible 执行速度的功能

    SSH pipelining 是一个加速 Ansible 执行速度的简单方法.ssh pipelining 默认是关闭,之所以默认关闭是为了兼容不同的 sudo 配置,主要是 requiretty 选 ...

  7. 记一次cocos项目的加载速度优化

    半个月前,我们用cosos creator做了一个简单的小游戏,也许算不上小游戏吧..一边学cocos,一边做,几经波折后终于上线了.然鹅,功能是实现了,但是加载速度十分感人(毕竟没经验嘛,无辜脸). ...

  8. Mysql数据库写入数据速度优化

    Mysql数据库写入数据速度优化 1)innodb_flush_log_at_trx_commit 默认值为1:设置为0,可以提高写入速度.  值为0:提升写入速度,但是安全方面较差,mysql服务器 ...

  9. (转)网站速度优化技巧:Nginx设置js、css过期时间

    网站速度优化技巧:Nginx设置js.css过期时间 原文:http://www.webkaka.com/blog/archives/Nginx-set-the-expiration-time-for ...

  10. Asp.net mvc 网站之速度优化 -- 页面缓存

    网站速度优化的一般方法 由于网站最重要的用户体验就是速度,特别是对于电子商务网站而言. 一般网站速度优化会涉及到几个方面: 1. 数据库优化 — 查询字段简历索引,使用数据库连接池和持久化,现在还有种 ...

随机推荐

  1. Mac_mysql_密码重置

    1 通过Mac 的设置 stop mysql 2 跳过权限认证 // 进入数据库指令文件 cd /usr/local/mysql/bin // 跳过权限认证 sudo ./mysqld_safe -- ...

  2. 【ACG】博主在专栏更新内容后,及时通知关注他的用户去阅读

    ​ 业务场景 当用户打开应用时,系统发送Push消息给用户,向用户推荐博主信息.用户关注博主后,将保存用户的订阅信息,当关注的博主更新内容时,向订阅的用户发送短信,提醒用户及时查看最新内容.从而持续增 ...

  3. docker学习笔记一-docker安装与卸载

    环境查看 # 1 查询当前centOS的版本,官方要求版本为7以上 uname -r 查询系统内核 cat /etc/os-release 系统版本 安装 # 1.卸载旧版本 yum remove d ...

  4. 餐饮行业SRM案例:方正璞华"采云链"携手和府捞面

    ​ 方正璞华在与和府捞面的项目中,帮助整合采购系统,系统化管理供应商,优化采购流程和数据分析,建立储备知识库. 项目背景 企业介绍 ◇ 和府捞面成立于2012年,是国内中式面食头部品牌.自2013年首 ...

  5. CSS之垂直水平居中的背后

    最开始,我想说,这个体系有点大,我写的并不好.就当作是一个思路吧,虽然这个思路有点乱.几乎每一个实现方案的背后都是该属性及其组合的原理,每一个都要剖析其规范细节的话,这篇文章绝不会是这样的篇幅,所以每 ...

  6. 【debug技巧】jstat:虚拟机统计信息监视器

    我们在日常开发时,难免会遇到一些没有内存泄漏等问题.有时,我们无法下载arthas等开源的诊断工具.这时候,我们就可以借助JDK自带的一些诊断工具. 首先我们可以使用jstat查看gc信息 字段含义 ...

  7. getSessionFactory().openSession()导致druid连接池中的连接都占用满但无法回收

    该问题产生的现象 页面刷新几次后,就卡住,线上就得需要重新部署(还好是测试环境,不是真正生产环境) 过程及原因 查看日志线程池满了 Caused by: org.springframework.jdb ...

  8. Failed to find a valid digest in the 'integrity' attribute for resource

    一.Bootstrap  引入报错 在使用bootstrap过程中发现无法使用下拉导航栏,或者是显示不出效果. Failed to find a valid digest in the 'integr ...

  9. centos 安装mysql 8.0

    在home下新建一个mysql文件夹 cd /home mkdir mysql cd mysql 1.首先上传文件,把文件传到 /home/mysql下 链接:https://pan.baidu.co ...

  10. C字符串和C++中string的区别

    在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作.以下是C字符串和C++中string的区别:   C字符串 string对象(C++) 所需的头文件名称 ...