如何从Hudson CI API获得更好的性能?

时间:2011-01-18 09:16:40

标签: performance hudson hudson-plugins hudson-api

我正在尝试为自己编写一个与Hudson构建服务器集成的小工具。我遇到的当前障碍是表现。我想做一个简单的事情,比如列出所有工作和上次成功构建的时间。 hudson API提供了这些信息,但我要么在depth=2查询所有内容,要么单独查询每个作业(当前有150个)。即使使用exclude,任何一种方法都需要半分钟。这对于应该是活泼的UI来说是不可接受的。我需要这个时间低于1s,最好低于0.5s。

我提出的当前解决方案是在客户端进行一些繁重的缓存。构建数据不会改变,因此使事情变得更容易。但它仍然有很多编码。

是否有其他方法可以快速获取此信息?也许有一个插件可以缓存所有数据并提高API速度?请注意,该工具通常无法访问HUDSON_HOME。

1 个答案:

答案 0 :(得分:3)

使用tree查询参数比在depth=2查询要快得多。根据Hudson内置API文档(参见控制http://hudson/api/下的的数据量),tree比排除更有效,因为服务器不会生成然后丢弃数据。

我认为以下网址适用于您的问题中的查询:

http://hudson/api/xml?tree=jobs[name,lastSuccessfulBuild[number,url,timestamp]]

在我的40-ish工作系统上:

$ time curl "http://hudson/api/xml?tree=jobs\[name,lastSuccessfulBuild\[number,url,timestamp\]\]"

<hudson><job><name>Example Windows build</name>
   <lastSuccessfulBuild><number>7</number>
   <timestamp>1264806194000</timestamp>
...lots of unformatted XML...

real    0m0.166s
user    0m0.062s
sys     0m0.093s