Повар Java Малло c вопросы - PullRequest
2 голосов
/ 17 марта 2020

У меня странная проблема с установкой программного обеспечения, использующего сценарий установки на основе ANT, выполняемый из JAR с использованием Oracle JVM (1.8) 64-бит.

Эта проблема возникает, только когда JAR выполняется с помощью шеф-повара. Примечание. Я использую ноль Chef для конвергенции.

  • Похоже, проблема в том, что JVM может выделить достаточно памяти для выполнения.
  • Эта проблема возникает ТОЛЬКО, когда Chef выполняет команду JAR, через саму консоль ОС и CMD все в порядке.
  • Мы устанавливали это программное обеспечение годами и до этого не сталкивались с этой проблемой, пока не начали использовать Chef.

Существуют различные ошибки, в зависимости от того, что я пытаюсь установить значения HEAP (обратите внимание, что нам никогда не приходилось устанавливать какие-либо параметры HEAP для установки ранее).

Одна из таких ошибок: Невозможно выделить 65536 КБ растровых изображений для параллельной сборки мусора для запрошенной кучи 2097152 КБ.

Я также видел другие подобные ошибки в зависимости от значений, которые я предоставляю для Xms и Xmx, аналогичных приведенным выше.


Это было замечено только в Windows системах и только в определенных образах VirtualBox.

  • Некоторые загруженные из net (vagrant) работают нормально, некоторые терпят неудачу с вышеприведенной ошибкой.
  • Любое изображение, которое я создаю локально, терпит неудачу.

Сценарии шеф-повара, которые я пробовал (обратите внимание на варианты java, которые я пробовал во многих комбинациях, это последняя попытка):

execute "Install Xstore: #{build_file}" do
   command "#{java_home}\\bin\\java -jar #{build_file}"
   cwd install_workdir
   environment ({ 'PATH' => "c:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\130\\Tools\\Binn\\;#{ENV['PATH']}", 'JAVA_TOOL_OPTIONS' => '-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=c:/xstore/log/dump.bin'  })
   not_if { ::Dir.exist?(xstore_install_dir) }
end

ruby_block "Install Xstore: #{build_file}" do
  block do
    stdout, status = Open3.capture2("#{java_home}\\bin\\java -jar #{build_file}", chdir: "#{install_workdir}")
           puts stdout
  end
end

Некоторые характеристики:

  • Chef-клиент: 14.14.29
  • Гостевая ВМ: Windows 10, Windows 10lts c - 64 бит
  • Хост: PopOS Linux 19.10
  • Версия VirtualBox: 6.0.14
  • Java (гость): 1.8.0_241
  • Host Ram 32 ГБ, VM Ram до 16 ГБ с такими же проблемами (ram всегда свободен на 90% в гостевом диспетчере задач, файл подкачки установлен в System, также попытался исправить)
...