java - Jenkins API 响应调优

标签 java linux web-services jenkins jenkins-api

我们在 Jenkins 之上构建了一个仪表板,使用户能够仅查看与项目相关的作业并触发构建。 UI 是使用 reactJS 构建的,后端是 JAVA REST WebServices。

WebService 调用 Jenkins api 来获取 Job 信息并将数据转换为 JSON 以提供给 UI。目前,我们在 Dashboard 上有大约 200 个职位。 Jenkins API 需要大约 2 分钟的时间来响应详细信息。

Jenkins 在 Linux 机器上运行

OracleLinux 6 x Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz / 39.25 GB

Jenkins 版本 - 1.564 有 16 个执行器和超过 2000 个作业

Sample API  Call - http://jenkins:8080/job/jobName/api/json?tree=displayName,builds[result],lastBuild[estimatedDuration,result,duration,number,timestamp,actions[causes[userName]]]

该 api 为 200 个作业调用 200 次以获取每个作业的详细信息。

关于如何加快 API 响应的任何建议。

我考虑过增加 Linux 机器上的 RAM 并调整 JVM OPTS。还将 Jenkins 升级到最新的 LTS。

最佳答案

唾手可得的果实:

  1. 并行运行请求,即不是一个接一个地运行。
  2. 如果您这样做并且使用标准 jetty container ,请尝试使用 --handlerCountMax 选项增加工作进程数(默认值为 40)。

最终,您应该尽量避免执行 200 个单独的请求。根据您的设置,单独对每个请求进行安全检查可能会导致大量开销。

因此,最简洁的解决方案是从主服务器上的单个 Groovy 脚本收集您需要的所有数据(您也可以通过 REST 实现):

  • 这将请求数减少到 1
  • 并且它允许进一步优化,可能会规避上述 Jon S 评论中提到的问题

关于java - Jenkins API 响应调优,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42149597/

相关文章:

web-services - 如何在 Mule Flow 中使用 SOAP Web 服务?

java - ant 脚本中面向 future 的 java 版本检查

Java - 将多个列表数据组合成一个单独的列列表

php - Symfony2 Web 应用程序部署

c++ - 为什么 LD_PRELOAD 不适用于加载的共享库之一?

jquery - 使用 jQuery 调用 Web 服务以返回简单的 bool 值

java - Mockito JUnit 测试抛出异常的方法

java - 如何切换数组列表中的字符串对?

linux - gcc 和 gcc c++ 有什么区别?

java - 如何在 CXF 客户端中动态添加 HTTP header ?