【问题标题】:Spring Boot vs. Web server memory consumptionSpring Boot vs. Web 服务器内存消耗
【发布时间】:2016-05-03 17:57:12
【问题描述】:

如果我在web服务器(Tomcat,Undertow)中设置一个既定的内存消耗,例如 -Xms 1024m -Xmx 1024m,JVM 仍然可以通过缓冲区、线程和原生例程。这意味着 1024m 不是使用的最大内存,我可能会看到 S.O.一个运行的进程远不止于此。

使用 Spring Boot 应用程序,每个 jar 都将拥有您自己的 Web 服务器,因此在这种情况下,如果我在 java 执行中没有设置任何 -Xms / -Xmx,它将从 JVM 获取默认值所以

所以,我怀疑如果我有多个 Spring Boot 应用程序在同一台服务器上运行,我的内存消耗难道不应该比只有一个内部有多个 WAR 的单个 Web 服务器消耗更多吗?

那个内存问题也适用于 CPU 和磁盘的使用,Spring Boot 需要更多的系统资源来运行吗?

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

    如果您在比较 Spring 与非 Spring 应用程序,您的帖子并不清楚,但我认为是这样。

    Spring does not have 特定的系统资源要求。 通常,当您在容器中运行 Spring 应用程序时,您可以预期(稍微)更高的资源消耗,因为框架会加载更多的类并执行一些如果您根本不使用 Spring 本来可以避免的处理。

    如果您考虑 Spring Boot 案例,您会发现可以通过两种方式运行 Spring Boot Web 应用程序:

    1. 通过独立容器
    2. package it as a WAR 并在您选择的容器中运行它

    在第一种情况下,如果有多个应用程序,您将需要更多资源,因为将运行多个容器(每个 Spring Boot 应用程序一个)。在第二种情况下,您需要的更少,因为所有应用程序都合并在一个容器中。最后一个考虑更多的是你如何部署而不是 Spring 或 Spring Boot 的内在属性。

    【讨论】:

    • 是的,我正在比较两个 Spring 应用程序,其中第一个被打包到一个 WAR 中以部署在 Tomcat 中,另一个作为嵌入 Tomcat 的独立 Spring Boot 应用程序运行。
    • 好的。我的帖子涵盖了这两种情况
    • 是的,但我的问题是在服务器耗尽之前我需要多少资源(cpu / 内存)?我知道一个容器小于多个容器,同时我们不能认为将1024m拆分为10个100m的Spring Boot容器。
    • 首先取决于有多少资源可用。然后也是应用程序本身。如果不进行一些分析,您将无法回答这个问题。您可以从 Java VisualVM 和 Java Mission Control 开始(两者都附带任何最新的 JDK)。
    • 简而言之,我们是否认为将所有相同的 WAR 拆分为多个独立的 Spring Boot 应用程序会比仅在单个 Tomcat 服务器上运行更重?
    猜你喜欢
    • 2020-01-06
    • 2018-05-05
    • 2019-01-16
    • 1970-01-01
    • 2012-04-09
    • 2021-06-17
    • 2017-06-16
    • 2020-03-19
    • 2015-10-05
    相关资源
    最近更新 更多