目前,当我们试图打开Jenkins配置页面时,大约需要45秒,而对于其他页面,如请求作业视图或查看控制台输出,则不到3秒。根据线程转储分析结果,我们得到了一个CPU“峰值”,描述为
"您的应用程序可能受到高CPU的困扰。"查看线程报告,我们没有看到任何阻塞状态,但有一个可疑状态:"1个线程是无限循环:DestRoyJavaVM"
不幸的是,我们无法确定这种高CPU的原因,可能还有相关的无限循环。
到目前为止,我们已经采取了一些措施来通过重启Jenkins来提高性能,结果从55秒到45秒快了10秒。我们将JVM最小/最大内存参数重新定义为相同的,并将炒作增加到4 Gb,它不会产生任何影响。我们创建了一个干净的测试Jenkins实例,使用相同的Jenkins版本、相同的安装插件和相同操作系统的较低硬件规格的作业配置。在新的测试Jenkins实例中,作业配置页的负载小于3秒。我们不确定是否可以排除安装的插件作为基于此测试的主要问题。
欢迎提出任何其他建议以跟踪问题。
线程转储分析报告
我们正在使用:-Windows Server 2008 R2 Enterprise sp1-Jenkins(Master):版本2.89.1-Java:JRE 1.8.0112-客户端浏览器Google Chrome版本61.0.3163.100(Officieële build)(64位)安装的插件:Ant插件-1.7 Apache HttpComponents客户端4。x API插件-4.5.3-2.0人工插件-2.13.1认证令牌API插件-1.3蓝海自动收藏夹-1.2.1 Bitbucket分支源插件-2.2.7蓝海Bitbucket管道-1.3.4蓝海-1.3.4蓝海管道编辑器-1.3.4 bouncycastle API插件-2.16.2分支API插件-2.0.15构建名称设置器-1.6.7蓝海通用API-1.3.4条件构建步骤-1.3.6蓝海配置API-1.3.4配置文件提供程序插件-2.16.4复制工件插件-1.39凭据绑定插件-1.13凭据插件-2.1.16自定义立即构建标签-1.1 CVS插件-2.13蓝海仪表板-1.3.4仪表板视图-2.9.11放弃旧版本构建插件-1.05磁盘使用插件-0.28显示上游更改-0.3.2显示URL API-2.2.0显示蓝海URL-2.2.0 Docker Commons插件-1.9 Docker Pipeline-1.14持久任务插件-1.17 EnvInject API插件-1.4环境注入器插件-2.1.5蓝海事件API-1.3.4外部监视器作业类型插件-1.7收藏夹-2.3.1文件夹插件-6.2.1 Git客户端插件-2.6.0蓝色海洋Git管道-1.3.4 Git插件-3.6.4 Git服务器插件-1.7 GitHub API插件-1.90 GitHub分支源插件-2.3.1蓝色海洋GitHub管道-1.3.4 GitHub插件-1.28.1 Gradle插件-1.28 HTML发布者插件-1.14 i18n蓝色海洋-1.3.4图标填充插件-2.0.3常春藤插件-1.28 Jackson 2 API插件-2.8.7.0 Javadoc插件-1.4 JavaScript GUI库:ACE编辑器包插件-1.1 JavaScript GUI库:把手包插件-1.1.1 JavaScript GUI库:jQuery包(jQuery和jQuery UI)插件-1.2.1 JavaScript GUI库:矩。js捆绑插件-1.1.1蓝海JIRA集成-1.3.4 JIRA插件-2.5作业配置历史插件-2.18 jQuery插件-1.12.4-0 JSch依赖插件-0.1.54.1 JUnit插件-1.23蓝海JWT-1.3.4 LDAP插件-1.18区域设置插件-1.2 Mailer插件-1.20托管脚本-1.4 MapDB API插件-1.0.9.0矩阵授权策略插件-2.2矩阵项目插件-1.12 Maven集成插件-3.0 Mercurial插件-2.2度量磁盘使用插件-3.0.0度量插件-3.1.2.10监控-1.70.0 MSBuild插件-1.28 MSTest插件-0.23 NAnt插件-1.4.3 OWASP依赖性检查插件-3.0.2 OWASP标记格式化程序插件-1.5 PAM身份验证插件-1.3参数化触发器插件-2.35.2蓝海个性化-1.3.4管道-2.5管道图分析插件-1.5蓝海管道实现-1.3.4蓝海管道SCM API-1.3.4管道实用程序步骤-1.5.1管道:API-2.24管道:基本步骤-2.6管道:构建步骤-2.5.1管道:声明性-1.2.5管道:声明性代理API-1.1.1管道:声明性扩展点API-1.2.5管道:Groovy-2.42管道:输入步骤-2.8管道:作业-2.15管道:里程碑步骤-1.3.1管道:模型API-1.2.5管道:多分支-2.16管道:节点和进程-2.17管道:REST API插件-2.9管道:SCM步骤-2.6管道:共享Groovy库-2.9管道:阶段步骤-2.3管道:阶段标记元数据-1.2.5管道:阶段视图插件-2.9管道:步骤API-2.14管道:支持API-2.16普通凭证插件-1.4插件用法-插件-0.3 PostBuildScript插件-2.2.1 PowerShell插件-1.3升级版插件-2.31发布子版“轻”总线-1.12质量门插件-2.5重建器-1.27资源处理器插件-0.8蓝海REST API-1.3.4蓝海REST实现-1.3.4基于角色的授权策略-2.6.1运行条件插件-1.0 SCM API插件-2.2.5脚本安全插件-1.36服务器发送事件(SSE)网关插件- 1.15简单的主题插件- 0.3 SonarQube Scanner的詹金斯- 2.61SSH证书插件- 1.13静态分析实用程序- 1.93结构插件- 1.10颠覆插件-2.9 Team Foundation Server插件-5.126节流并发构建插件-2.0.1时间戳-1.8 8令牌宏插件-2.3变型插件-1.1蓝海网络-1.3.4 Windows从属插件-1.3.1工作区清理插件-0.34
首先,自己回答以下问题:
>
是否有其他CPU密集型进程在同一Jenkins服务器上运行?
高IO也可能导致巨大的CPU负载,磁盘IO怎么样?
JVM在内存和分页不足时,可能会增加CPU负载,从而降低应用程序性能。
因此,您的故障排除步骤应该是:
>
找出每个进程的平均CPU利用率,即消耗CPU周期的任何东西(不应如此)
总的RAM使用率。
磁盘IO性能指标—您是否在未预料到的情况下看到IO峰值?
确定Jenkins发起的子进程-找到每个进程的平均资源利用率。这些是否超载任何资源(CPU,RAM,磁盘IO?)
根据您的发现,您应该相应地调整您的方框和流程。这可能意味着增加资源。
Jenkins重启后,我们发现很少有节点执行器繁忙。占据executor的作业有条带的蓝白加载条,并且没有链接到任何特定的构建(事实上,该作业没有正在进行的构建)。所以我们没有id或ui方式来中止它,您可以在这里看到: 詹金斯节点上的工作是什么样子的 现在,我想找到一种方法,在不真正调查问题原因的情况下杀死它,也许它与Jenkins管道作业相关,不会在UI中完成——但在我们的情况下,我们没有基本的
问题内容: 我想创建一个Jenkins作业来启动其他Jenkins作业。那将非常容易,因为Jenkins模板项目插件允许我们创建一个类型为“使用来自另一个项目的构建器”的构建步骤。但是,使我的情况更难的是,我必须在其他计算机上开始Jenkins的工作。有什么标准方法可以做到吗? 问题答案: 万一您只想触发Job的新版本,您有多种方法可以完成它 您可以使用远程访问API并触发请求以从源Job构建目标
问题内容: 为什么Jenkins有两种工作,即多配置项目和自由样式项目?我读过某个地方,一旦选择其中一个,就无法(轻松地)转换为另一个。为什么我不总是选择多配置项目以确保将来的更改安全? 我想为在Windows和Unix(以及其他平台)上构建的项目设置构建。我发现了这个问题),它提出了相同的问题,但我并没有真正找到答案。为什么我需要三个矩阵项目(而不是三个自由样式项目),每个平台一个?为什么不能将
问题内容: 我如何每隔15分钟在Jenkins上执行一次定时任务? 这是我尝试过的: 在詹金斯上,我有一个作业设置为使用以下cron语法每15分钟运行一次: 但是作业将每小时执行一次,而不是每15分钟执行一次。 我收到有关cron语法格式的警告: 这可能是cron作业每小时执行一次而不是15分钟执行一次的原因吗? 问题答案: 您的语法略有错误。说: 表示cron表达式与该字段的所有值匹配。 描述范
我有两个Jenkins工作流作业,它们以不同的参数启动同一个作业,即它们构建的分支。后一项工作是在多个平台上构建项目。“头”作业,即Workflow作业可以在不同的机器上启动。此外,设置中还有两台linux机器。 有时会发生这样的情况,其中一个(比如master)在其中一台linux机器上启动,另一个在另一台上启动。他们都必须在linux机器上构建一个目标,因为他们都很忙,所以两个作业都停滞不前。
问题内容: 我正在使用Jenkins向工作中的EC2项目添加持续集成。Jenkins机器本身保留在EC2机器上- 可能需要将该机器脱机并随时恢复到完全不同的EC2实例上。我们有一堆Puppet清单,使我们可以轻松地在EC2实例上重新安装该软件,但是自定义配置文件(例如我在Jenkins中创建的作业的配置文件)将在移动后被删除。 现在,如果Jenkins将要在其上运行的作业存储在XML文件或XML文