《如何为Java程序配置JVM参数》

Systemd 入门教程:实战篇

不懂Systemd的伙伴,可以参考这篇文章:Systemd 入门教程:实战篇

1、JVM相关参数

在Java虚拟机(JVM)中,-XX参数用于设置一些非标准的、高级的或者实验性的选项。这些选项通常被称为“非稳定”选项,因为它们可能在不同的JVM版本中以及不同的操作系统上表现不同,甚至在未来的版本中可能会被移除。

以下是一些常用的-XX参数:

  1. -XX:+HeapDumpOnOutOfMemoryError:当发生内存溢出错误时,自动生成堆转储文件。
  2. -XX:HeapDumpPath=<path>:指定堆转储文件的保存路径。
  3. -XX:MaxHeapDumpSize=<size>:设置堆转储文件的最大大小。
  4. -XX:InitialHeapSize=<size>:设置初始堆大小。
  5. -XX:MaxHeapSize=<size>:设置最大堆大小。
  6. -XX:PermSize=<size>-XX:MaxPermSize=<size>:用于设置永久代的初始大小和最大大小(在JDK 8及更高版本中已被废弃)。
  7. -XX:MetaspaceSize=<size>-XX:MaxMetaspaceSize=<size>:用于设置元空间(Metaspace)的初始大小和最大大小(JDK 8及更高版本中取代了永久代)。

请注意,使用-XX参数需要谨慎,因为它们可能会影响JVM的稳定性和性能。此外,这些参数在不同的JVM实现中可能有所不同,建议仔细阅读相关文档并进行测试后再在生产环境中使用。

2、服务配置文件

[root@iZ0pu00rjhghkqcoaldf06Z /]# cat  /etc/systemd/system/CITask.service
[Unit]
Description=java-task servcie
After=syslog.target

[Service]
User=root
ExecStart=/usr/bin/java -Djava.util.Arrays.useLegacyMergeSort=true -jar -Xmx8g -Xms1g -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+ParallelRefProcEnabled -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./dump/  /app/task/java-task.jar  --spring.profiles.active=prod --spring.cloud.nacos.config.file-extension=properties --spring.cloud.nacos.config.server-addr=11.11.11.11:8848 --spring.cloud.nacos.discovery.server-addr=11.11.11.11:8848 --logging.level.com.alibaba.nacos.client.naming=ERROR --logging.path=/data/log/dcb/java-task
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

3、命令解释

这里提供的内容是一个 Systemd 服务单元文件的片段,用于定义一个名为 “community-intensive-task” 的系统服务。让我解释一下这些内容的含义:

  1. [Unit]:这个部分定义了系统服务单元的基本属性,包括描述和启动顺序等信息。

    • Description=community-intensive-task service:这里定义了服务的描述,即它是 “community-intensive-task” 服务。

    • After=syslog.target:这里指定了在 syslog.target 启动后再启动这个服务。syslog.target 是系统日志服务的一个目标单元,这意味着该服务将在系统日志服务之后启动。

  2. [Service]:这个部分定义了服务的具体参数和设置。

    • User=root:这里指定了以 root 用户的身份来运行这个服务。这意味着该服务将以超级用户权限来运行。

在整个服务单元文件中,[Unit] 部分提供了有关服务的基本信息,而 [Service] 部分则提供了有关服务运行方式的详细设置。

希望这能帮助您理解这个服务单元文件的含义。如果您有其他关于系统服务或者 Systemd 的问题,也欢迎随时向我提问。