虽然Java应用程序服务器将扩展一个独特的JVM来运行多个(微)服务,但是一个dockerized java微服务架构将为每个dockerized微服务运行一个JVM。 考虑到20多个java微服务和有限数量的主机,似乎JVM在每台主机上消耗的资源量都很大。
有没有一种有效的方法来管理这个问题?是否可以调整每个JVM以限制资源消耗? 目的是限制在java微服务架构中使用docker的开销。
答案 0 :(得分:3)
每个运行的Docker和JVM副本都使用内存。通常在单个节点上有多个JVM会使用共享内存,但这不是docker的一个选项。
您可以做的是减少每个JVM的最大堆大小。但是,我会允许每个docker镜像至少1 GB作为开销加上每个JVM的堆大小。虽然这听起来像很多记忆,但这些日子并没有花费太多。
假设你给每个JVM一个2 GB的堆并为docker + JVM添加1 GB,你需要一个64 GB的服务器来运行20个JVM / docker。
答案 1 :(得分:0)
安装步骤以创建用于MS的Docker映像并推送Docker注册表 MS的图像创建步骤: 1-将dist文件夹复制到Docker主机。
2-在dist文件夹中创建docker文件
示例-
从bhel
运行mkdir -p RSA_docker
复制RSA_docker /
WORKDIR RSA_docker / bin
RUN [“ chmod”,“ 777”,“ ./ runRSA.sh”]
博览会6599
CMD [“ ./runRSA.sh”]
RUN [“ echo”,” ———- runRSA.sh ——-执行“”
3-使用以下命令构建图像
docker build -t(映像名称)。
图片名称应为(MSNAME-MSVENDOR-VERSION)
Ex- RSA-1.0.0
4-检查通过命令成功创建的图像
码头工人图像
5-标记图像并推送到docker存储库
Ex-
docker标签RSA-1.0.0 docker-repo.com:5000/ RSA-1.0.0
docker push RSA-1.0.0 docker-repo.com:5000/RSA-1.0.0
使用Docker群服务运行MS映像 对于在swarm节点上运行MS docker映像,将使用docker swarm管理器中的docker swarm服务。
1-无节点约束
docker service create –name rsaservice –reserve-cpu 1 –reserve-memory 5560mb –network my-overlay-net –replicas 1 -p 7099:7099 docker-repo.com:5000/rsaimage
2-具有节点约束 a-通过以下命令获取节点详细信息。在命令输出中,我们获得了节点ID列表。
docker节点ls
b-在docker manager上运行具有节点ID的命令
Ex-
docker service create –name rsaservice –reserve-cpu 1 –reserve-memory 5560mb –network my-overnet-net –replicas 1 –constraint'node.id == jjmjz9ns6lev1r1gef32og1vz'-p 7099:7099 docker-repo.com: 5000 / rsaimage
3-在docker主机上使用bash访问正在运行的容器中的日志
要知道容器在哪里运行,我们必须从docker swarm manager主机运行以下命令:
a-提供节点ID的详细信息
docker节点ls
b-给予docker running swarm服务列表
docker service ls
c-查找运行容器的docker容器ID和节点ID
docker service ps(服务ID)
从上面的命令中,我们将获取在docker主机上运行的服务的任务ID
然后使用以下命令检查任务ID
码头工人检查(任务ID)
在输出中,我们将获得运行服务容器的容器ID和节点ID。
d-运行容器的Docker主机,使用bash命令登录到容器
docker exec -it(container-id)/ bin / bash
4-要停止运行服务
要停止运行服务,我们将从docker swarm管理器中运行以下命令。
它将停止并删除在码头上运行的容器