springboot服务器配置内存,cpu?

在 Spring Boot 应用中配置 JVM 的内存和 CPU 使用,主要通过设置 JVM 参数来实现。下面详细介绍如何配置 Spring Boot 应用的 内存CPU 相关参数,适用于本地开发、测试环境或生产部署(如 Linux 服务器、Docker 容器等)。


🧠 一、配置 JVM 内存参数

Spring Boot 是基于 Java 的应用,所以其内存配置本质上是配置 JVM 的内存参数。

1. 常见内存参数

参数 说明
-Xms 初始堆内存大小
-Xmx 最大堆内存大小
-XX:MetaspaceSize 元空间初始大小(Java 8+)
-XX:MaxMetaspaceSize 元空间最大大小
-Xss 每个线程的栈大小
-XX:+HeapDumpOnOutOfMemoryError OOM 时生成堆转储文件
-XX:HeapDumpPath 堆转储文件保存路径

2. 示例配置

方式一:启动命令中指定(推荐)

java -Xms512m -Xmx2g 
     -XX:MetaspaceSize=128m 
     -XX:MaxMetaspaceSize=512m 
     -jar your-application.jar

方式二:通过 JAVA_TOOL_OPTIONS 环境变量

export JAVA_TOOL_OPTIONS="-Xms512m -Xmx2g"

⚠️ 注意:JAVA_TOOL_OPTIONS 对所有 Java 应用生效,慎用。

方式三:在脚本中封装启动命令

#!/bin/bash
java -Xms512m -Xmx2g 
     -XX:MetaspaceSize=128m 
     -XX:MaxMetaspaceSize=512m 
     -jar /path/to/your-application.jar > /dev/null 2>&1 &

⚙️ 二、限制 CPU 使用(非 JVM 参数)

JVM 本身不提供限制 CPU 使用的参数,但可以通过操作系统或容器层面来限制 CPU 使用。

1. Linux 系统下使用 cpulimit

sudo apt install cpulimit
cpulimit -l 50 -p <PID>
  • -l 50 表示限制最多使用 50% 的 CPU。
  • <PID> 是 Java 进程的 PID。

2. Docker 容器中限制 CPU

docker run -d 
  --name my-springboot-app 
  --cpus="1.5" 
  -e JAVA_TOOL_OPTIONS="-Xms512m -Xmx2g" 
  my-springboot-image
  • --cpus="1.5" 表示最多使用 1.5 个 CPU 核心。

3. Kubernetes 中限制 CPU 资源

resources:
  limits:
    cpu: "2"
    memory: "4Gi"
  requests:
    cpu: "1"
    memory: "2Gi"

📊 三、监控内存和 CPU 使用情况

1. 内置监控(Spring Boot Actuator)

添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

启用端点:

management:
  endpoints:
    web:
      exposure:
        include: "*"

访问:

http://localhost:8080/actuator/metrics/jvm.memory.used
http://localhost:8080/actuator/metrics/system.cpu.usage

2. 外部工具

  • VisualVM / JConsole:图形化监控 JVM 内存和线程。
  • Prometheus + Grafana:用于生产环境监控。
  • Micrometer:Spring Boot 原生支持的指标库。

📌 四、建议的生产环境配置(示例)

java -Xms2g -Xmx4g 
     -XX:MetaspaceSize=256m 
     -XX:MaxMetaspaceSize=512m 
     -Xss512k 
     -XX:+UseG1GC 
     -XX:+HeapDumpOnOutOfMemoryError 
     -XX:HeapDumpPath=/opt/app/oom.hprof 
     -jar your-app.jar

✅ 总结

项目 推荐配置
初始堆内存 -Xms -Xmx 一致,避免频繁 GC
Metaspace 设置 MetaspaceSizeMaxMetaspaceSize
GC 算法 推荐 G1GC(-XX:+UseG1GC
CPU 限制 通过 Docker/K8s/系统工具控制
内存溢出处理 -XX:+HeapDumpOnOutOfMemoryError

如果你提供具体的部署环境(如 Docker、K8s、裸机等),我可以给出更具体的配置建议。需要我帮你写一个完整的启动脚本或 Dockerfile 吗?

未经允许不得转载:ECLOUD博客 » springboot服务器配置内存,cpu?