【问题标题】:How to get a better performance from Hudson CI API?如何从 Hudson CI API 获得更好的性能?
【发布时间】:2011-01-18 09:16:40
【问题描述】:

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

我提出的当前解决方案是在客户端进行大量缓存。构建数据不会改变,这让事情变得容易多了。但这仍然是很多编码。

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

【问题讨论】:

    标签: performance hudson hudson-plugins hudson-api


    【解决方案1】:

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

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

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

    在我的系统上有 40 个左右的工作:

    $ 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
    

    【讨论】:

    • 谢谢!显然它的版本比我们工作时的版本要晚,这就是我错过它的原因。我得谈谈升级。
    • @Vilx 是的,根据 Hudson 更新日志,tree 是在 1.367 中引入的。那个时候哈德逊也有一些重要的安全修复——以防万一你有更多升级的理由:)
    • 嘿,我问了,他们升级了!而且,是的,tree 参数非常理想!非常感谢!
    猜你喜欢
    • 2011-11-26
    • 2011-11-29
    • 2021-02-05
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2011-01-20
    相关资源
    最近更新 更多