【问题标题】:Spring boot application as a service + VM OptionsSpring Boot 应用程序即服务 + VM 选项
【发布时间】:2016-12-04 08:13:46
【问题描述】:

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

它基于此文档: 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 选项。 我尝试将 .conf 文件添加到项目中,但它不起作用。

/var/myapp/myapp.conf:

JAVA_OPTS=-Xms256M -Xmx512M

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

【问题讨论】:

    标签: linux spring-boot systemd jvm-arguments


    【解决方案1】:

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

    我的 .conf 文件的内容有误。 我也需要这样写:

    export JAVA_OPTS="-Xms256m -Xmx512m"
    

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

    【讨论】:

      【解决方案2】:

      根据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 变量暴露给应用程序

      【讨论】:

      • 感谢您的回答。我试过了,但它对我不起作用。
      【解决方案3】:

      另外一个好办法是在与myapp.jar文件相同的目录下创建一个配置文件myapp.conf

      /var/myapp/
      

      并放入以下内容:

      JAVA_OPTS="-Xms256m -Xmx512m"
      

      然后重新启动应用程序。

      注意配置文件的名字应该和jar文件一样,除了扩展名.conf而不是.jar或者.war

      这种方式还有一些其他的好处:

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

      更多详情请见here

      【讨论】:

        猜你喜欢
        • 2014-02-25
        • 2018-09-01
        • 1970-01-01
        • 2015-11-30
        • 1970-01-01
        • 2016-12-18
        • 2019-04-28
        • 2020-09-22
        • 2014-06-09
        相关资源
        最近更新 更多