使用共享只读依赖项缓存的Gradle编译速度慢

14ifxucb  于 2023-01-17  发布在  其他
关注(0)|答案(1)|浏览(160)

我正在CI环境中使用共享只读依赖项缓存运行Gradle构建。此依赖项缓存确实提高了CI构建的性能,但不如我所希望的那样。
当$GRADLE_HOME目录为空时,编译时间大约为2分钟。当$GRADLE_HOME目录预填充时,编译时间大约为30秒。注意,对于这些测试,我在运行编译任务之前停止了所有守护进程进程,因此守护进程执行的任何缓存都是无关紧要的。
我已将性能缓慢的原因缩小到两个文件:$GRADLE_HOME/caches/7.5.1/javaCompile/classAnalysis.bin$GRADLE_HOME/caches/7.5.1/javaCompile/jarAnalysis.bin。当这些文件不存在时,编译需要2分钟。当它们存在时,编译需要30秒。
这些文件包含了什么,为什么它们会对编译时间产生如此大的影响?
其他可能有用的信息:

  • 操作系统:Linux 2
  • EC2示例类型:c5.xlarge
  • Java版本:OpenJDK 64位服务器虚拟机Temurin-17.0.5+8
  • Gradle版本:7.5.1
nwlls2ji

nwlls2ji1#

Gradle主文件夹位于EBS卷上。我发现,当主文件夹位于EC2示例的本地存储上时,不会出现性能下降的情况。我将示例类型更改为c6id.xlarge,它具有基于NVMe的本地SSD块级存储。
因此,我认为我的问题与EBS有关,而与Gradle本身无关。增加EBS卷的预配置IOPS和吞吐量没有帮助,因此在本地存储上运行Gradle似乎是解决方案。

相关问题