如果Gerrit的邮件延迟(没有SLA?),维护者(我们的Gerrit+GitHub镜像)直到下一个每15分钟的Gerrit投票才会更新。
我们可能应该比15分钟更频繁地进行一次廉价的投票。
我刚刚看到一个3-5分钟的邮件延迟。
@andybons,对于Gerrit和我们的配额来说,有什么便宜的方式来询问Gerrit最近发生了什么变化,包括评论和投票?
对每个项目执行完整的git ls-remote非常昂贵,无论是在网络方面还是因为我们需要为每个项目执行它。
使用限制为1的查询所有更改/项目似乎在网络方面是便宜的,但不确定为此分配了多少配额。我们可以每分钟执行吗?
7条答案
按热度按时间rn0zuynd1#
查询所有更改/项目并限制为1是前进的最佳方式,但未经身份验证的Gerrit请求在一天内被限制为0.2 qps,而经过身份验证的请求则为1 qps。因此,如果未经身份验证,我们最多可以有12个客户端每分钟向Gerrit发送一个查询。我认为这对现在来说是可以接受的,但随着更多的事情使用maintner进行移动/构建,情况会变得更糟。
不妨考虑一下经过身份验证的请求,这样我们就可以减少轮询间隔。
uklbhaso2#
正如我私下告诉Andy的那样,我强烈建议设置认证。如果你超过了配额,我们可以增加它,但仅限于每个用户。所以如果你不用在中断期间从匿名状态切换到认证状态而感到生活更轻松的话,可能会发现这样做更有意义。
我有点好奇,如果你将轮询间隔减少到1分钟,你实际上会观察到多少次没有更新任何更改的间隔。也许值得每隔1分钟进行一次“完整”轮询,而不是进行一次“快速”轮询以查看是否有任何变化,然后再进行100%的完整轮询。
kh212irz3#
我们可以使用https://gerrit.googlesource.com/gcompute-tools/轻松地完成这个任务。首先解决这个问题。
pw136qt24#
https://golang.org/cl/57710提到了这个问题:
maintner: decrease poll interval from 15 to 5 min
57hvy0tb5#
我不会使用
gcompute-tools
。我们的许多Docker容器只有一个进程,甚至不包含文件系统。就像我们已经做的那样,使用GCE元数据服务。事实上,Gerrit的身份验证凭据已经在那里了,并被一些Gerrit客户端使用。我们只需要在更多的地方使用它。8wigbo566#
在示例元数据中,我没有看到Gerrit认证凭据。它被命名为一些不太明显的东西吗?
vxf3dgd47#
无法在公司内网检查,但gopherbot会向Gerrit发送请求,因此gopherbot正在以某种方式获取Gerrit的授权。
这三个链接之一:https://github.com/golang/build/blob/158d74e/cmd/gopherbot/gopherbot.go#L76