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

当任务在队列中时,jenkins 会在界面上显示该任务在队列中等待的原因。对于 api 创建的任务,它们的等待原因是“finished waiting”。从这个原因的字面含义确实看不出来什么。当出现这样的问题时,最直接的办法是从源代码中寻找答案。
从 github 上把 jenkins 的源代码下载到本地。寻找问题的起点是搜索字符串“finished waiting”。这个字符串定义在资源包(resource bundle)中,对应的键是 queue.finishedwaiting
。再搜索使用了这个键的代码,定位到了类 hudson.model.queue
。从名字可以看出来,这个类表示的是 jenkins 内部的工作队列。在这个类中定
相关文章:
-
语音识别技术(Automatic Speech Recognition)是一种将人的语音转换为文本的技术。…
-
人工智能语言模型和AI绘画在多个领域都有广泛的应用.....SparkAi创作系统是一款基于ChatGPT和Midjourney开发的智能问答和绘画系统,提供一站式 AI B/C …
-
腾讯云视频直播sdk开发攻略
7.回放功能是 用的点播sdk 也就是直播的sdk (点播和直播的东西在一个jar包里面)用了互动直播sdk开发的同学发现,如果项目需要做 视频回放功能 ...
[阅读全文]
-
-
-
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论