#sonarqube #azure-pipelines #sonarqube-scan #sonarqube5.1 #azure-devops-server-2020
#гидролокатор #azure-трубопроводы #гидролокатор-сканирование #сонаркубе5.1 #azure-devops-сервер-2020
Вопрос:
Я пытаюсь запустить сканер сонара на виртуальной машине docker как часть моего частного сервера сборки Azure DevOps и получаю сообщение об ошибке, когда файлу подкачки не хватает памяти для завершения анализа. Мой образ docker работает под управлением базового образа Windows server core 2019 с установленным JDK 11.0.13 и сканером Sonarqube 5.0.0. На сервере также установлены следующие переменные среды, чтобы попытаться увеличить размер виртуальной машины Java:
JAVA_OPTS=»-Xms1024m -Xmx4608m»
SONAR_SCANNER_OPTS=»-Xmx4608m»
Мое изображение работает с 5 ГБ оперативной памяти, и мониторинг контейнера показывает, что все еще доступно много памяти для использования. Я заметил, что при первом запуске сканирования после запуска контейнера оно работает нормально, но при каждой последующей попытке появляется ошибка:
##[ошибка]64-разрядная виртуальная машина Java HotSpot(TM) предупреждение: ИНФОРМАЦИЯ: ос::commit_memory(0x0000000789c00000, 703594496, 0) сбой; ошибка= «Файл подкачки слишком мал для завершения этой операции» (ошибка DOS/errno=1455)
Может ли кто-нибудь, пожалуйста, помочь мне с тем, почему он не может выделить около 700 МБ, когда доступно более 2 ГБ оперативной памяти.
Версии всего: Агенты Azure DevOps: 2.194.0 JDK: 11.0.13 Расширение сканера Sonarqube: 5.0.0 Докер: 20.10.7 Базовый образ докера: dotnet/framework/sdk:4.8-gbt-windowsservercore-ltsc2019
Ответ №1:
Проблема оказалась связана с тем, что JavaXmlSensor обнаружил некоторые очень большие тестовые файлы xml в тестовом проекте, он пытался загрузить их в память и проанализировать, что вызвало ошибку нехватки памяти.
Чтобы исправить это, я добавил **/*.xml в sonar.exclusions, а также добавил тот же список исключений в параметр sonar.test.exclusions.