Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 部署多个spring应用程序实例_Java_Spring_Spring Boot_Deployment_Web Deployment - Fatal编程技术网

Java 部署多个spring应用程序实例

Java 部署多个spring应用程序实例,java,spring,spring-boot,deployment,web-deployment,Java,Spring,Spring Boot,Deployment,Web Deployment,我需要部署同一个spring应用程序的多个实例 我实际上使用docker作为实例的容器,每个实例有一个容器 然而,我注意到一个容器消耗了高达500mb的内存,这对我来说太多了,因为我需要我的VPS尽可能多地赶上实例,老实说,这些容器只用于JVM,其他什么都不用,将整个虚拟环境专用于一个简单的JVM实例是对内存的极大浪费,我根本不需要 我需要的更像是一个帮助我管理实例的工具(如果进程因某种原因被终止,则自动启动;如果开发了新版本的应用程序,则轻松更新实例;通过用于调试的行命令或其他方式管理实例。)

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

我实际上使用docker作为实例的容器,每个实例有一个容器

然而,我注意到一个容器消耗了高达500mb的内存,这对我来说太多了,因为我需要我的VPS尽可能多地赶上实例,老实说,这些容器只用于JVM,其他什么都不用,将整个虚拟环境专用于一个简单的JVM实例是对内存的极大浪费,我根本不需要

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

顺便说一下,我从OVH云服务公司得到了一个VPS,他不提供任何类似spring的部署服务。我正在开发传统的Ubuntu 18.04


提前感谢

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

我会给你一个概述,这样你就可以有一个起点

JVM内存限制

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

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

可以使用-MaxMetaspaceSize设置元空间。元空间是在Java8中引入的。如果您使用的是Java6或Java7,那么应该看看PermGen

集装箱限额

您还可以通过在docker run命令中附加-m标志来设置容器的最大内存。您可以在此处查看docker的文档:

集装箱管理

这应该有自己的详细答案。首先,Spring框架与您试图实现的目标无关。它不能解决自动重启或类似的问题

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

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


为了实现快速而肮脏的实现,您可以使用docker swarm,这是一款简单易懂的产品,可以与docker容器无缝集成。

看起来您将几个问题合并到了一个问题中。要解决内存问题,您应该首先查看JVM参数(HeapSize和MetaSpace),并根据应用程序的内存使用情况发布限制。管理您的容器是一个完全不同的主题…与JVM无关,因为当我在没有容器的情况下启动应用程序时,它不会消耗太多内存(大约100mb)。回答得很好,很抱歉回复这么晚。。。我已经使用-m参数限制了容器的内存消耗,当我使用docker stats命令检查容器时,我的容器消耗了700mb,我已经将其限制为256mb,现在它只消耗218mb。。。只是不知道这是否真的是一个愚蠢的选择。。。