0

我正在尝试在 docker 虚拟机上运行声纳扫描仪,作为我的私有 Azure DevOps 构建服务器的一部分,并且由于页面文件没有足够的内存来完成分析而出现错误。我的 docker 映像正在运行安装了 JDK 11.0.13 和 Sonarqube 扫描仪 5.0.0 的 Windows Server Core 2019 基础映像。服务器还设置了以下环境变量以尝试增加 Java VM 大小:

JAVA_OPTS="-Xms1024m -Xmx4608m"
SONAR_SCANNER_OPTS="-Xmx4608m"

我的图像使用 5GB RAM 运行,并且监视容器显示仍有大量内存可供使用。我注意到,在启动容器后第一次运行扫描时,它运行良好,但之后的每次尝试都会出现错误:

##[错误]Java HotSpot(TM) 64 位服务器虚拟机警告:INFO: os::commit_memory(0x0000000789c00000, 703594496, 0) 失败;error='分页文件太小,无法完成此操作' (DOS 错误/errno=1455)

有人可以帮我解释为什么当有超过 2GB 的可用 RAM 时它无法分配大约 700MB。

一切的版本是: Azure DevOps 代理:2.194.0 JDK:11.0.13 Sonarqube 扫描仪扩展:5.0.0 Docker:20.10.7 Docker 基础映像:dotnet/framework/sdk:4.8-gbt-windowsservercore-ltsc2019

4

1 回答 1

0

这个问题原来与 JavaXmlSensor 在测试项目中检测到一些非常大的 xml 测试文件有关,它试图将它们加载到内存中并分析它们导致内存不足错误。

为了解决这个问题,我将 **/*.xml 添加到 sonar.exclusions 中,并将相同的排除列表添加到 sonar.test.exclusions 设置中。

于 2021-12-02T15:11:20.207 回答