Sonarqube扫描仪-Java HotSpot(TM)64位服务器虚拟机警告页面文件太小



我正试图在docker虚拟机上运行声纳扫描仪,作为我的私人Azure DevOps构建服务器的一部分,但页面文件没有足够的内存来完成分析,因此出现错误。我的docker镜像运行的是windows server core 2019基本镜像,安装了JDK 11.0.13和Sonarqube scanner 5.0.0。服务器还设置了以下环境变量,以尝试增加Java VM的大小:

JAVA_OPTS="-Xms1024m-Xmx4608m">
SONAR_SCANNER_OTS="-Xmx4608m";

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

##[error]Java HotSpot(TM(64位服务器VM警告:INFO:os::commit_memory(0x0000000789c00000703594496,0(失败;error="页面文件太小,无法完成此操作"(DOS错误/errno=1455(

有人能帮我解释一下为什么在可用内存超过2GB的情况下无法分配700MB左右的内存吗。

所有内容的版本都是:Azure DevOps代理:2.194.0JDK:11.0.13Sonarqube扫描仪扩展:5.0.0Docker:20.10.7Docker基本镜像:dotnet/framework/sdk:4.8-gbt-windowservercore-ltsc2019

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

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

相关内容

最新更新