gpt4 book ai didi

java - 部署Spring应用程序的多个实例

转载 作者:行者123 更新时间:2023-12-02 09:20:41 25 4
gpt4 key购买 nike

我需要部署同一个 Spring 应用程序的多个实例。

我实际上使用 docker 作为我的实例的容器,并且每个实例都有 1 个容器。

但是注意到一个容器消耗高达 500mb,这对我来说已经很大了,因为我需要我的 VPS 来捕获尽可能多的实例,老实说,这些容器仅用于 JVM,没有其他用途,将整个虚拟环境专用于一个简单的 JVM 实例会浪费大量内存,而且我根本不需要它。

我需要的更像是一个帮助我管理实例的工具(如果进程由于某种原因被终止,则自动启动,如果开发了新版本的应用程序,则可以轻松更新实例,通过行管理实例用于调试或其他命令。)就像我可以使用 Docker 一样,但没有完整的虚拟化环境,这太“贪婪”

顺便说一句,我有一个来自 OVH 云服务的 VPS,它不提供任何类似 spring 的部署服务。我正在使用传统的 Ubuntu 18.04。

提前致谢

最佳答案

您应该从堆栈底部到顶部处理此问题。我会尝试回答每个主题,但我建议您将其分为几个问题,以便人们可以对每个问题给出更详细的答案。

我将向您提供一个概述,以便您可以有一个起点。

JVM 内存限制

首先,通过对 JVM 设置一致的限制来控制内存分配。您可以通过设置最大堆大小和最大元空间大小 (Java 8) 来实现此目的。

您可以通过附加标志-Xmx来设置最大堆大小。 -Xmx1G 将堆大小限制为 1 GB。

可以使用-MaxMetaspaceSize设置元空间。元空间是在 Java 8 中引入的。如果您使用 Java 6 或 7,您应该看看 PermGen。

容器限制

您还可以通过将 -m 标志附加到 docker run 命令来设置容器的最大内存。您可以在这里查看 docker 的文档:https://docs.docker.com/config/containers/resource_constraints/

容器管理

这值得有自己详细的答案。首先,Spring Framework 它与您想要实现的目标无关。它无法解决自动重启或类似问题。

您正在寻找的是容器管理工具。您可以查看 docker swarm、portainer 或 kubernetes。

它们将允许您启动同一服务的多个实例,而无需在代码级别进行任何更改。

为了快速而肮脏的实现,您可以使用 docker swarm,这是一个简单的方法,并且与 docker 容器无缝集成。

关于java - 部署Spring应用程序的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58717062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com