SaltStack怎么批量对上千台服务器并发执行命令并汇总输出

冬磊小哥_5641

冬磊小哥_5641

2026-10-03

370人浏览

原创

默认不快是因为worker_threads默认仅5个,导致结果轮询堆积、event bus过载,加之timeout(5秒)和gather_job_timeout(10秒)过短,易触发超时丢结果。

saltstack怎么批量对上千台服务器并发执行命令并汇总输出

能并发,但默认不是“完全并行”,需调参数+选对模块才能压满带宽、避免 master 卡住或 minion 超时。

为什么 salt '*' cmd.run 默认不快

默认情况下,salt 命令会启动 worker_threads 个线程(master 配置里默认是 5),每个线程串行处理一批 minion 的返回。上千台机器如果只靠 5 个线程轮询收结果,实际是“伪并发”——命令发得快,但结果回传慢、堆积在 event bus 上,容易触发 minion 端的 timeout 或 master 端的 gather_job_timeout。

  • timeout 参数控制的是“等待单个 minion 返回的最长时间”,默认 5 秒,远低于真实网络延迟波动
  • gather_job_timeout 控制的是“等待所有 minion 结果汇总的总时间”,默认 10 秒,不够用
  • minion 端若负载高或磁盘慢,cmd.run 执行本身也可能卡住,导致超时丢结果

怎么真正并发执行并可靠汇总

关键不是加线程数,而是让 master 能发得出去、收得回来、不丢不重:

codex-cn-bridge
codex-cn-bridge

一款AI工具,主要用于通过协议转换与自动配置,使 OpenAI Codex CLI 支持多家国内 AI 模型提供商,适合需要提升相关任务效率的用户。

下载
  • 启动命令时显式加大超时:salt '*' cmd.run 'uptime' --timeout=60 --gather-job-timeout=120
  • 调整 master 配置中 worker_threads 到 15–30(视 CPU 核数而定),避免线程争抢;同时增大 pub_hwm 和 ret_port 连接队列(防止 ZeroMQ 消息被丢)
  • 对长耗时命令,改用 cmd.run_bg 后台执行 + 异步查状态,避免阻塞主线程
  • 用 --out=json 或 --out=yaml 输出结构化数据,方便后续用 jq 或 Python 解析汇总,别依赖默认的 human-readable 格式
  • 避免在命令里嵌套太多 shell 逻辑(比如管道、循环),尽量拆成原子操作,降低单次执行失败概率

输出汇总时容易漏掉哪些 minion

不是所有没返回的 minion 都是“执行失败”,有些只是慢或暂时断连:

  • 执行完后用 salt-run jobs.list_jobs 查看任务 ID,再用 salt-run jobs.lookup_jid <jid></jid> 补全缺失结果(前提是 minion 没重启过且 job cache 开启)
  • 配置 job_cache: True 并启用 master_job_cache: local_cache(默认已开),否则超时后结果就彻底丢了
  • 注意 minion 端的 acceptance_wait_time_max 和 random_reauth_delay,若网络抖动频繁,可能造成认证延迟,导致部分 minion 拒绝本次 job
  • 用 salt '*' test.ping --summary 先筛一遍存活节点,比直接跑业务命令更稳

真正压到上千台并发时,瓶颈往往不在 Salt 本身,而在 minion 端的系统资源(如 fork 数量限制)、master 的 ZeroMQ socket 队列长度、以及网络中间设备的连接数限制。别只调 worker_threads,先确认 netstat -an | grep :4505 | wc -l 是否接近系统 ulimit。一旦看到大量 TIME_WAIT 或连接拒绝,就得调内核参数了。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

880

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2612

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

876

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

769

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

394

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2356

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4352

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

707

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
尚观shell视频教程
尚观shell视频教程

共8课时 | 1.9万人学习