16

在大多数 Jenkins 的示例中,SCM 轮询值被指定为 */15 * * * * ,即。每 15 分钟轮询一次 SCM。当您有数百个作业时,这很好,但如果您有数千个作业,则不会,因为它会在每小时的 15、30、45 和 0 分钟向 SCM(在本例中为 Subversion)服务器发出数千个请求。

有没有办法随机化 Jenkins 中的轮询值以避免上述情况?

在 Jenkins 主配置屏幕上有一个值“Max # of concurrent polling”。是否应该设置(以及设置什么值)以避免上述情况?

4

4 回答 4

29

使用 H 而不是 * 并且 Jenkins 将随机分发轮询。请注意,目前还没有找到与每小时/每天/等不同的频率的良好语法,所以

H * * * *

将在预先确定的随机分钟每小时轮询一次。

哈哈 * * *

将每天在预定的随机小时和分钟轮询一次

哈哈 * *

每周投票一次

0 小时 * * *

将按小时轮询,但每天在预先确定的随机时间轮询一次。

请记住,您可以使用多个 cron 行并且任何行都将匹配,因此,在确定了一个很好的亚小时频率语法之前,您可以(平均而言)通过类似

H * * * *
H * * * *
H * * * *
H * * * *
H * * * *
H * * * *

投票之间平均会给你 15 分钟(是的,每小时会有 6 次投票,但这是很有可能每一刻钟至少会有一次投票)

如果您对在一小时内分发的语法有很好的建议,请回复此线程:

https://groups.google.com/forum/?fromgroups#!jenkinsci-users/VghEjfygWuw/PuIG1o7u1GQJ%5B1-25%5D

更新(2013 年 4 月)

Jenkins 1.510 和更新版本包含一个新语法,允许在一小时内指定分布

于 2012-08-10T08:39:50.627 回答
2

如果您将 max# of concurrent polling 设置为 1 到 3 之间的某个值,则轮询请求将简单地排队并串行处理(或最多并行处理 3 个)。

鉴于 SVN 轮询所涉及的所有内容都是有效的

svn info 分支网址

它们都应该很快完成,但至少你会限制并行请求。

于 2012-08-10T06:42:07.430 回答
1

@Stephen Connolly 的解决方案可能是一个很好的解决方案。

如果你真的有成千上万的工作需要担心,可以考虑根据工作名称的某些部分来设置时间(假设你的工作名称分布合理)。

For example, if your job starts with 'B', set the timings to */2. If it starts with 'C', set it to */3 etc. ('A' would need something other than 1 though).

It's not a terrific solution, but if you're really looking at managing that many jobs it might be a work-around until you can find a better solution.

于 2012-08-11T02:16:55.330 回答
0

H H H * *

I think above will poll once per month not per week

于 2015-07-28T08:16:39.363 回答