繁体   English   中英

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

[英]Jenkins job windows batch execution 20 times slower than executing in cmd.exe

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

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

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

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

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

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

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

提前致谢 :)

我有一个类似的问题。 我注意到带有echo Hello World的 .bat 文件运行得很快并且没有问题。

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

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

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

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

就我而言,这是 Jenkins 代理的原因。

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

我的环境:

  • 主控:CentOS7
  • 奴隶特工:赢7

并且我也在win 10的一个slave agent上测试了这个案例进行对比。 通过 Jenkins 执行的时间与在代理机器上手动执行批处理文件的时间大致相同。

所以我猜这是win 7和Jenkins之间的兼容性问题。 但是对于Jenkins官方说Jenkins不再支持win 7(微软不支持Windows 7),我们暂时搁置了。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM