Spring загрузочное приложение как сервис + VM Options
У меня есть загрузочное приложение Spring, которое запускается как служба с использованием systemd в Linux.
Он основан на этой документации: http://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html
С помощью скрипта по умолчанию запускается файл jar. Работает нормально.
/etc/systemd/system/myapp.service:
[Unit]
Description=myapp
After=syslog.target
[Service]
User=myapp
ExecStart=/var/myapp/myapp.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Теперь я хочу добавить VM Option, когда jar начнется. Я пытался добавить файл.conf в проект, но он не работает.
/var/myapp/myapp.conf:
JAVA_OPTS=-Xms256M -Xmx512M
Как добавить опцию JVM для запуска приложения с помощью systemd?
2 ответа
Наконец-то я нашел решение: как настроить размер кучи при запуске приложения с весенней загрузкой со встроенным tomcat?
Содержимое моего файла.conf было неверным. Мне тоже нужно написать это:
export JAVA_OPTS="-Xms256m -Xmx512m"
Теперь, когда я запускаю "service myapp start", он запускается с хорошим размером кучи.
Согласно документации вы можете просто добавить переменную окружения JAVA_OPTS
если тебе этого достаточно
То, как мы запускаем приложения с пользовательскими переменными ENV и systemd, будет выглядеть для вашего проекта следующим образом:
[Unit]
Description=myapp
After=syslog.target
[Service]
User=myapp
ExecStart=source /var/myapp/myapp.conf; java -jar /var/myapp/myapp.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
В основном исходный код конфигурации ENV будет напрямую представлять переменные ENV приложению
Еще один хороший способ - создать файл конфигурации myapp.conf
в том же каталоге с myapp.jar
файл
/var/myapp/
и поместите следующий контент:
JAVA_OPTS="-Xms256m -Xmx512m"
Затем перезапустите приложение.
Обратите внимание, что имя файла конфигурации должно совпадать с именем файла jar, за исключением расширения, .conf
вместо того .jar
или .war
.
У этого способа есть и другие преимущества:
- Сохраните настройки отдельно для
myapp
только приложение. - У нас также могут быть дополнительные параметры в файле.
Более подробную информацию можно найти здесь.