Spring启动应用程序作为服务+ VM选项

时间:2016-07-29 14:50:09

标签: linux spring-boot systemd jvm-arguments

我有一个Spring启动应用程序,它是使用Linux的systemd作为服务启动的。

它基于此文档: 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

现在我想在jar启动时添加VM Option。 我尝试将.conf文件添加到项目中,但它不起作用。

/var/myapp/myapp.conf:

JAVA_OPTS=-Xms256M -Xmx512M

如何添加JVM选项以使用systemd启动应用程序?

3 个答案:

答案 0 :(得分:3)

我终于找到了一个解决方案: how to configure heap size when start a spring-boot application with embedded tomcat?

我的.conf文件内容错误。 我也需要写下这个:

export JAVA_OPTS="-Xms256m -Xmx512m"

现在,当我运行" service myapp start"时,它以良好的堆大小开始。

答案 1 :(得分:1)

根据documentation,您可以简单地添加一个环境变量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变量暴露给应用程序

答案 2 :(得分:1)

另一种好方法是在与myapp.conf文件相同的目录中创建配置文件myapp.jar

/var/myapp/

并输入以下内容:

JAVA_OPTS="-Xms256m -Xmx512m"

然后重新启动应用程序。

请注意,除了扩展名.conf而不是.jar.war之外,配置文件的名称应与jar文件相同。

这种方式还具有其他一些优点:

  • 仅保留myapp应用程序的设置。
  • 我们也可以在文件中添加其他参数。

更多详细信息,请参见here