我有一个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启动应用程序?
答案 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。