为了减少内存消耗,我们需要向 JVM 显式地传递一些参数。
env_file
是用来指定环境变量文件的路径的。默认情况下,
env_file
中指定的路径是相对于当前工作目录的。因此,如果你想在
docker-compose.yml
中使用
dev.jvm.conf
文件,你需要确保该文件与
docker-compose.yml
文件处于同一级别的目录中。
project/
│
├── docker-compose.yml
└── dev.jvm.conf复制
dev.jvm.conf
文件不在同一级别的目录中,你可以使用相对路径或者绝对路径来引用它。例如,如果
dev.jvm.conf
文件在
configs
子目录下,你可以这样引用:
services:
service1:
env_file:
- ./configs/dev.jvm.conf复制
services:
service1:
env_file:
- /path/to/dev.jvm.conf复制
# dev.jvm.conf
# 覆盖应用程序的属性
SERVER_TOMCAT_ACCEPT_COUNT=3
SERVER_TOMCAT_MAX_CONNECTIONS=3
SERVER_TOMCAT_THREADS_MAX=3
SERVER_TOMCAT_THREADS_MIN_SPARE=1
SPRING_MAIN_LAZY_INITIALIZATION=true
# 设置JVM参数
JAVA_TOOL_OPTIONS=-XX:+UseSerialGC -Xss512k -XX:MaxRAM=200m复制
然后,我们使用 docker-compose 将这些环境变量传递到容器中:
# docker-compose.yml
services:
service1:
env_file:
- dev.jvm.conf
service2:
env_file:
- dev.jvm.conf复制
现在运行docker-compose up
命令,您应该能看到一些差异
配置解释
SERVER_TOMCAT_ACCEPT_COUNT=3:指定 Tomcat 服务器中接受传入连接的最大数量。在高负载环境下,这可以帮助控制并发连接的数量,从而减轻服务器压力。 SERVER_TOMCAT_MAX_CONNECTIONS=3:指定 Tomcat 服务器允许的最大同时连接数。这个值可以控制 Tomcat 可以同时处理的最大请求数量。 SERVER_TOMCAT_THREADS_MAX=3:指定 Tomcat 服务器用于处理传入请求的最大线程数。通过限制线程数量,可以避免因过度并发而导致的资源耗尽或性能下降。 SERVER_TOMCAT_THREADS_MIN_SPARE=1:指定 Tomcat 服务器在空闲状态下保持的最小线程数。这有助于确保即使在低负载时也有足够的线程可用,以快速响应传入的请求。 SPRING_MAIN_LAZY_INITIALIZATION=true:启用 Spring Boot 主应用程序的懒加载初始化。懒加载初始化意味着 Spring Boot 将推迟加载应用程序的组件,直到它们被请求时才加载。这有助于减少应用程序启动时的内存消耗和启动时间。
JAVA_TOOL_OPTIONS:使用该属性,我们可以向 JVM 传递一些额外的参数。让我们来谈谈其中的每个参数意义。
-XX:+UseSerialGC:这个参数会使 JVM 使用单线程进行内联垃圾收集,而不是使用专用的 GC 线程。 -Xss512k:这个参数将每个线程的堆栈大小限制为 512KB,而不是默认的 1MB。 -XX:MaxRAM=200m:这个参数设置 JVM 最大可使用的 RAM 内存为 200MB。
这是一些简单的调整,但它们可以在本地开发环境中显著减少内存消耗.
---THE END---
文章转载自程序员恰恰,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。