【问题标题】:Jenkins GUI only shown after waiting for 2 minutesJenkins GUI 仅在等待 2 分钟后显示
【发布时间】:2014-06-18 08:03:59
【问题描述】:

我的 Jenkins 版本是 Jenkins 1.508。一些谷歌搜索似乎表明我需要在我的 jenkins.xml 中进行一些小的更改(例如参见 http://devophuman.blogspot.nl/2013/04/jenkins-is-going-wild.html),但对我而言,xml 更改并没有太大帮助。今天安装了监控插件,可以看到jenkins响应我的请求需要112978毫秒,应该去哪里找罪魁祸首呢?

【问题讨论】:

  • 第一,我建议你更新到可用的最新 Jenkins。我们运行 1.550 没有任何问题。第二,你是否在 httpd 或其他 Web 服务器后面运行它?如果是这样,请检查日志。

标签: jenkins


【解决方案1】:

我建议检查几个不同的东西。

  1. jenkins 进程是否与 100% CPU 或更高挂钩?例如,这可能表明存在太多构建(Jenkins 似乎对此有问题;我通常保留不超过 每个作业 25 个构建,以帮助防止性能问题这)。我注意到Performance 插件也可能导致 CPU 使用率过高,尤其是在绘制图形时(Jenkins 不缓存也不保存到磁盘,因此每个页面加载都需要重新创建)。

  2. Jenkins 访问日志说什么?它是否会快速注册您的请求,但随后似乎无所事事?如果是这种情况并且 CPU 没有与jenkins 进程挂钩,则可能是浏览器问题。

我发现页面在 5 分钟后仍未加载,但是 服务器上似乎没有基于jenkins的负载,也没有任何严重的负载 在其他地方的盒子上。我一直在使用Firefox 来访问 页面,当我在Chrome 中尝试相同的页面时,它加载了 即刻。然后我可以回到Firefox,它再次无法加载。 所以当时浏览器在Jenkins 方面出现了问题(不太确定是什么)。所以现在我一般使用Chrome来访问 Jenkins 并没有真正注意到页面加载缓慢/不加载。

根据 OP 的评论进行编辑:

为了清理旧版本,我采用了两个阶段的过程:

  1. 导航到Jenkins 安装的jobs 目录,然后进入要清理的每个作业的builds 目录。从那里简单地删除您不再需要的构建目录(使用您喜欢的任何 shell 工具 - 查找等)如果构建过多是问题,那么在文件系统级别清理这些应该允许 Jenkins 页面和要加载的视图。
  2. 如果清理然后允许您加载作业页面,则可以单击 Configure 操作更改配置并选择保留有限构建数量的选项,将其设置为较低的值,例如25 岁。

如果jenkins 进程没有与高 CPU 数量挂钩,那么问题似乎不太可能是构建数量,但可能值得一试。如果您认为稍后可能需要返回构建信息,只需将它们移动到 jobs 文件夹层次结构之外的位置,而不是删除它们,Jenkins 不会知道它们。您以后可以随时将其移回。

最好在 Jenkins 停止的情况下进行文件级移动,然后在清理完成后重新加载它。这样它就可以迭代更少的构建。

根据 OP 的后续评论进行编辑:

回复:第 1 点,这听起来肯定是安装存在问题(交叉链接的单独安装,或类似的东西)。

回复:第 2 点:这部分取决于 Jenkins 的安装方式。即它是在 Tomcat 上运行,还是独立运行?

回复:第 3 点:这真的听起来您可能有交叉链接安装。如果你停止了 Jenkins,GUI 真的应该不再工作了。

Re:第 4 点:11 秒肯定比 2 分钟有很大改进。这绝对表明太多的保留构建是一个问题,但是页面确实应该非常快地加载到相对空闲的系统上,所以听起来可能还有其他一些问题,尤其是各种交叉链接安装。

是否有不止一个 jenkins 进程在运行?是否涉及Tomcat

编辑以回应 OP 的后续评论:

鉴于您的 cmets 不记得原始安装的详细信息,我认为最好使用自包含(即非 Tomcat)方法从头开始安装 Jenkins,然后从旧安装迁移您的数据正如我之前提到的,为了以防万一,首先将整个作业目录复制到其他地方。

这样您就可以确定安装细节并保留数据。

【讨论】:

  • 服务器未固定在 100%,大约 80% 空闲。我们的团队一直在使用 Chrome,但自从安装了 Jenkins 以来,我没有清理任何构建。我在 Jenkins 安装目录中发现了许多日志,但没有访问日志。 err.log 相当大,并显示许多消息,例如“无法加载...”。所以我想首先要做的是:清理一些旧版本。推荐的方法是什么?
  • 添加了一些关于当 Web UI 被楔入时我如何清理构建的信息。此外,它在错误日志中给出的无法加载页面的原因是什么?任何错误模式?
  • 1) 日志文件,“无法加载...”的原因:目录名称无效。 2)我仍然想知道访问日志可能在哪里...... 3)停止了jenkins但gui仍然有效,杀死了进程而不是停止服务。不知道这是否与响应时间有关,但我的詹金斯安装似乎有问题。 4) 清理:完全按照您的建议进行:在 2014 年 1 月 6 日之前手动删除所有构建,并重新配置作业。第一次远程 gui 访问需要 11 秒。这比 2 分钟要好,但我们必须看看未来几天会如何发展。
  • 添加了对答案的附加响应。
  • 一个问题是我大约一年前安装了Jenkins,我忘记了安装细节。另一个问题是我在该服务器上运行了许多tomcat,在不同的端口上。 jenkins GUI 的 8080 端口让我觉得和 tomcat 有一些关系,但是 jenkins 服务以 D:\Programs\Jenkins\jenkins.exe 启动,并且目录结构不是传统的 tomcat 的日志,webapss (取而代之的是“战争”)子目录。我只在进程资源管理器中看到 jenkins.exe。日志信息太少,无法查看 gui 正在努力解决的问题。
【解决方案2】:

根据我的经验,它与 Windows 文件系统在处理具有大量子文件夹的文件夹方面非常糟糕有关。加载视图可能需要一分钟。

我们通过减少每个作业存储的默认构建并按照 khampson 的建议删除旧构建,再次加快了 Jenkins 视图的速度。

我希望在 Linux 上运行的 Jenkins 能够更好地处理大量构建

【讨论】:

    【解决方案3】:

    这可能不是原始海报的问题,但我希望它可以帮助通过网络搜索登陆这里的其他人。在我们的 Jenkins 案例中,UI 的大幅下降原来是网络问题。我在办公室搬迁期间将服务器移动到了一个临时位置,Jenkins Location/Jenkins URL 中的设置会失败。将其临时设置为 hostname.local 使页面加载恢复正常。

    【讨论】:

      【解决方案4】:

      将 Jenkins 升级到 1.568 版并清理作业目录后,一天中第一次调用的典型响应时间缩短到大约 20 秒。我认为“当天的第一次通话”在这里很重要,因为当我然后转到另一台机器时,GUI 会立即呈现在那里。这可能与公司代理、各处的缓存机制或内部 jenkins 实现有关,但我可以接受目前的情况。

      【讨论】:

      • 嗨,Erik,我们早上的加载也遇到了同样的问题。我们不使用代理。所以这是一个詹金斯问题 afaik。
      【解决方案5】:

      我们已经实施了一项快速而肮脏的工作。只需在 Jenkins 中创建一个定期调用以下 shell 脚本的作业:

      wget http://localhost:8080/view/All/ -O /dev/null
      

      这为我们的用户减少了所有视图的加载时间(因为 Jenkins 必须自己承担)。

      如评论中所述,wget 仅加载作业视图。为了交互所有作业,我们使用以下 curl 脚本(基于 Linux 的主机):

      詹金斯 1.x;

      for x in ` curl 'http://localhost:8080/api/xml?tree=jobs\[url\]' | sed 's/<url>/\n/g' |  sed 's/<\/url>//g' | sed 's/<job>//g'| sed 's/<job>//g' | sed 's/<\/job>//g' | grep http | sed 's/your.jenkins.host.domain/localhost:8080/' ` ; do curl "$x" -o /dev/null ;done
      

      詹金斯 2.x;

      for x in `  curl 'http://localhost:8080/api/xml?tree=jobs\[url\]' | sed 's/<url>/\n/g' |  sed 's/<\/url.*//g' | grep http | sed 's/your.jenkins.host.domain/localhost:8080/' ` ; do curl "$x" -o /dev/null ;done
      

      您当然可以对同一件事进行查看 (http://localhost:8080/api/xml?tree=views[url])

      【讨论】:

      • 遗憾的是,这不适用于 jenkins 中的文件夹插件。由于项目位于文件夹下方,因此仍未加载
      • 我已经用一个 curl 脚本更新了我的帖子,该脚本用于获取所有作业。相同的方法可以应用于作业、视图和通过 API 访问的所有其他类型。
      • 感谢更新,测试了 curl。我的詹金斯禁止访问。需要身份验证
      【解决方案6】:

      多个 LTS Jenkins 版本作为 Windows 服务运行时,我遇到了同样的问题。奇怪的是,在隐身模式下启动 Chrome,然后浏览到 Jenkins URL,Jenkins 的加载速度明显更快。为多个用户绘制大约需要 1 分钟,但在隐身模式下需要不到 5 秒。我不确定为什么缓存是这样的问题。清除缓存可以在短时间内解决问题,但它会在几个小时内重新开始,因此隐身模式是可行的方法。

      【讨论】:

        猜你喜欢
        • 2016-05-07
        • 2018-02-05
        • 2019-10-13
        • 1970-01-01
        • 1970-01-01
        • 2018-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多