我正在尝试在 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