Jenkins 作业窗口批处理执行速度比在 cmd.exe 中执行慢 20 倍



我刚刚在Windows 2012服务器上安装了Jenkins 2.46.2。它作为系统服务运行。

我创建了一个执行 Windows 批处理 (.bat) 脚本以生成代码项目的作业。此批处理导致执行 2 个 mingw32-make.exe 命令来清理,然后从源代码构建完整的二进制文件。 在位于同一文件系统(与 Jenkins 作业使用的工作区相同的工作区,本地磁盘 - 而不是网络磁盘)的计算机上手动执行批处理,清理构建需要 ~50 秒。

但是当由 Jenkins 执行时,这项工作需要的时间延长 20 倍以上!(~19 分钟)。它以与在 cmd.exe 中手动执行的相同行为成功终止。

我用"-Xmx1024m -XX:MaxPermSize=512m"选项更改了 jkins.xml 文件中 jvm 的启动参数,因为我在文档中读到了以提高性能。但它不能解决任何问题:-(

此外,当我监控 CPU/磁盘/RAM 使用率时,它们在构建时都保持非常低的水平,所以我推断机器的暴力性能不是原因。

无论我是否在 Jenkins 作业构建步骤中调用带有调用语句的批处理都不会改变任何东西:作业总是持续 19 分钟。

谁能帮我调查为什么这么慢?

提前致谢:)

我也有类似的问题。我注意到.bat带有echo Hello World的文件运行速度很快,没有问题。

但是一旦我尝试从批处理脚本启动任何 grep.exe,即使没有输入文件,也需要 24 秒(就我而言)才能运行。如果手动启动,它会立即完成。

我使用了 MSys 1.0 发行版中的 grep.exe 2.5.4 版本。

在我的情况下,解决方案相当出乎意料 - 我将 grep 更新到 2.24 版,现在,从 Jenkins 启动,处理超过 1 MB 的日志文件只需不到一秒钟的时间。

经过几天的调查,我终于找到了原因。

就我而言,这是詹金斯代理的原因。

当我在从属代理中将 Jenkins 代理作为 Windows 服务安装时,消耗时间非常大,但是当我尝试通过 windows 命令行启动 Jenkins 代理时,消耗时间与手动执行批处理文件一样正常。

我的环境:

  • 主:CentOS7
  • 从属代理:赢7

我还在 win 10 的从属代理中测试了这种情况以进行比较。 通过 Jenkins 执行的时间与在代理计算机上手动执行批处理文件的时间大致相同。

所以我想这是win 7和Jenkins之间的兼容性问题。 但为此,Jenkins 官方表示 Jenkins 不再支持 win 7(Microsoft不支持 Windows 7),我们暂时将其搁置一旁。

无论如何,我们找到了一种方法来征服它。希望这对类似的情况有所帮助。

最新更新