Spring Docker 上的 Cloud Netflix 应用程序 运行 被容器杀死,为什么?

Spring Cloud Netflix apps running on Docker are killed by the container why?

我正在 Windows.

上测试一些 Spring Cloud Netflix 微服务 运行 它们作为单独的 Docker 容器

数量不少,十个以上。关键是在 运行 其中一些 7、8... 应用程序的性能开始下降并且一些容器被杀死,例如我看到:

2017-01-24 14:05:52.165  INFO 5 --- [nfoReplicator-0] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@67b129a3: startup date [Tue Jan 24 14:05:52 GMT 2017]; root of context hierarchy
Killed

我为应用程序使用相同的 Docker 文件(每个应用程序都更改 ADD 命令):

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD archimedes-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

我想知道是否有必要提供 -Xms 和 -Xmx 标志来强制 minimum/maximum 可用内存...

另一方面,我启动的容器越多,应用程序的响应就越慢...但是 Window 的任务管理器没有显示任何 CPU/RAM 耗尽。也许我必须调整 Windows Docker 安装?

代码可在此处获得:https://github.com/codependent/storyteller-microservices/tree/high-availability-rxjava

要启动每个微服务,在每个文件夹下都有一个 startContainer.sh 显示我正在使用的 docker 命令,例如:

mvn clean package docker:build -DskipTests
docker run -e "SPRING_PROFILES_ACTIVE=archimedes1" -p 8761:8761 \
  --name archimedes1 --add-host archimedes1:192.168.99.100 --add-host archimedes2:192.168.99.100 --add-host my-rabbit:192.168.99.100 \
  -d storyteller/archimedes 
docker run -e "SPRING_PROFILES_ACTIVE=archimedes2" -p 8762:8762 \
  --name archimedes2 --add-host archimedes1:192.168.99.100 --add-host archimedes2:192.168.99.100 --add-host my-rabbit:192.168.99.100 -d storyteller/archimedes

我通过为 VirtualBox 分配更多内存来修复它:在设置视图中,系统选项卡 --> 基本内存 4GB。

有了这个,容器 运行 顺利地没有被杀死。