我是一名有帮助的助手,可以为您翻译以下内容,涉及编程和AWS:
此时我的服务(标准的Spring Cloud服务,只有一个端点,使用spring-data-redis将数据写入Redis数据库)甚至还没有启动。
我添加了一些参数来限制JVM内存堆,但似乎并没有减少太多:
我在AWS上的小/中型机器上运行多个微服务 (Spring Cloud + Docker),最近发现这些机器经常耗尽并需要重新启动。
我正在调查这种电力损失的原因,考虑可能存在内存泄漏或实例/容器的错误配置。
我尝试通过限制这些容器可以使用的内存量来解决问题:
docker run -m 500M --memory-swap 500M -d my-service:latest
此时我的服务(标准的Spring Cloud服务,只有一个端点,使用spring-data-redis将数据写入Redis数据库)甚至还没有启动。
将内存增加到760M
,就可以正常运行了,但是在使用docker进行监控时,我看到最小内存为:
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
cd5f64aa371e 0.18% 606.9 MiB / 762.9 MiB 79.55% 102.4 MB / 99 MB 1.012 MB / 4.153 MB 60
我添加了一些参数来限制JVM内存堆,但似乎并没有减少太多:
_JAVA_OPTIONS: "-Xms8m -Xss256k -Xmx512m"
我正在运行
- Spring Cloud Brixton.M5
- Spring Boot 1.3.2
- Java 8 (Oracle JVM)
- Docker
- Spring data Redis 1.7.1
为什么这样一个简单的服务需要使用如此多的内存来运行?是否有任何功能应该禁用以改善它?
FROM java:8-jre-alpine
而不是我最初使用的非alpine JDK基础镜像...但这并没有帮助太多。有其他想法吗? - Fabian