当前位置: 代码网 > it编程>游戏开发>ar > 从源代码出发,Jenkins 任务排队时间过长问题的解决过程

从源代码出发,Jenkins 任务排队时间过长问题的解决过程

2024年08月02日 ar 我要评论
最近开发了一个部署相关的工具,使用 Jenkins 来构建应用。Jenkins 的任务从模板中创建而来。每次部署时,通过 Jenkins API 来触发构建任务。在线上运行时发现,通过 API 触发的 Jenkins 任务总是会时不时在队列中等待较长的时间。某些情况下的等待时间甚至长达几分钟。直接在 Jenkins 界面上触发的任务却几乎不需要排队,直接马上就可以执行。过长的等待时间影响了构建的效...

最近开发了一个部署相关的工具,使用 jenkins 来构建应用。jenkins 的任务从模板中创建而来。每次部署时,通过 jenkins api 来触发构建任务。在线上运行时发现,通过 api 触发的 jenkins 任务总是会时不时在队列中等待较长的时间。某些情况下的等待时间甚至长达几分钟。直接在 jenkins 界面上触发的任务却几乎不需要排队,直接马上就可以执行。过长的等待时间影响了构建的效率,这是一个急需解决的问题。这个问题奇怪的地方在于,手动从界面上触发的任务几乎不需要排队,而 api 触发的任务的排队时间则完全随机,毫无规律可言。

494f9a6e5f9311d241be67ed537ad5df.jpeg

当任务在队列中时,jenkins 会在界面上显示该任务在队列中等待的原因。对于 api 创建的任务,它们的等待原因是“finished waiting”。从这个原因的字面含义确实看不出来什么。当出现这样的问题时,最直接的办法是从源代码中寻找答案。

从 github 上把 jenkins 的源代码下载到本地。寻找问题的起点是搜索字符串“finished waiting”。这个字符串定义在资源包(resource bundle)中,对应的键是 queue.finishedwaiting。再搜索使用了这个键的代码,定位到了类 hudson.model.queue。从名字可以看出来,这个类表示的是 jenkins 内部的工作队列。在这个类中定

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com