如何有效地定位java微服务

时间:2016-09-07 08:06:47

标签: java docker jvm microservices application-server

虽然Java应用程序服务器将扩展一个独特的JVM来运行多个(微)服务,但是一个dockerized java微服务架构将为每个dockerized微服务运行一个JVM。 考虑到20多个java微服务和有限数量的主机,似乎JVM在每台主机上消耗的资源量都很大。

有没有一种有效的方法来管理这个问题?是否可以调整每个JVM以限制资源消耗? 目的是限制在java微服务架构中使用docker的开销。

2 个答案:

答案 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管理器中运行以下命令。

它将停止并删除在码头上运行的容器

更多内容:http://writeulearn.com/docker/