当前位置: 首页 > 知识库问答 >
问题:

带有tomcat的SpringBoot应用程序在Openshift中消耗了更多资源

濮阳驰
2023-03-14

我正在Openshift环境中部署一个Spring boot Web应用程序。由于我们在同一个引导项目中使用JSP和CSS等Web组件,因此我们将应用程序部署为Openshift环境中的WAR文件。我还添加了tomcat-embed-jasper来解析这些Web组件并执行WAR文件。

但问题是,当我在Openshift环境中部署它时,应用程序消耗了超过1GB的资源。有什么方法可以减少应用程序的内存消耗吗?

Dockerfile

FROM maven:3.5-jdk-8-alpine AS MAVEN_BUILD
COPY pom.xml /build/
COPY src /build/src/

WORKDIR /build/
RUN mvn -DskipTests=true package

FROM tomcat:8.0.51-jre8-alpine

WORKDIR /usr/local/tomcat/webapps/
RUN rm -rf /usr/local/tomcat/webapps/*
COPY --from=MAVEN_BUILD /build/target/services-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh","run"]

我尝试更改为不同的 tomcat 映像,但是当我部署时,只有 tomcat 启动,我的应用程序没有部署在 tomcat 中。我也在寻找这方面的建议。以下是当我使用不同的雄猫图像时记录的。

图片:tomcat: 10.0.0-jdk8-passtopenjdk-openj9

15-Sep-2020 07:03:31.484 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/usr/local/tomcat/webapps/ROOT.war]
15-Sep-2020 07:03:38.884 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
15-Sep-2020 07:03:39.048 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/usr/local/tomcat/webapps/ROOT.war] has finished in [7,563] ms
15-Sep-2020 07:03:39.054 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
15-Sep-2020 07:03:39.067 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [7671] milliseconds

谢谢。

共有1个答案

向俊贤
2023-03-14

如此处所示

FROM maven:3.5-jdk-8-alpine AS MAVEN_BUILD
COPY pom.xml /build/
COPY src /build/src/

您正在复制完整的src文件夹。我想这会占用很多内存。

我建议将mvn包从DockerFile中排除,单独运行mvn包,并单独使用以下部分:

FROM tomcat:8.0.51-jre8-alpine

WORKDIR /usr/local/tomcat/webapps/
RUN rm -rf /usr/local/tomcat/webapps/*
COPY --from=MAVEN_BUILD /build/target/services-1.0-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh","run"]
 类似资料:
  • null 在这两种实现中,REST控制器都直接从存储库中获取数据,并将其作为列表RESP返回。作为通量。不执行进一步的应用程序逻辑。 我们对100个调用服务的用户进行了一个小型负载/性能测试,我们发现非反应实现的性能远远好于反应实现。 事实上,非反应实现不仅有更好的HTTP吞吐量,而且更有趣的是,它比反应实现消耗更少的CPU和线程!这与预期尤其相反,因为我们预期反应版本只需少量线程即可扩展,如ht

  • 本文向大家介绍如何确定在Oracle中消耗更多资源的SQL?,包括了如何确定在Oracle中消耗更多资源的SQL?的使用技巧和注意事项,需要的朋友参考一下 问题: 您要标识消耗Oracle中更多资源的SQL语句。 解 “ V $SQLSTATS”视图显示最近执行的SQL语句的性能统计信息,也可以使用“ V $SQL”和“ V $SQLAREA”报告SQL资源使用情况。  “ V $SQLSTATS

  • 完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。

  • 在OpenShiftV3中,我无法将我的springboot应用程序与mySQL POD链接起来。 到目前为止我所做的: > 在openshift V3中启动并运行了一个基本的spring boot应用程序。 添加了一个mysql应用程序。pod已启动并运行,没有错误。 在我的spring boot应用程序的application.properties中添加了数据源配置: spring.datas

  • Android Studio在Mac机上消耗了太多的内存,并且还运行了多java进程。 Android Studio版本:使用Android Studio北极狐2020.3.1(补丁1构建#AI-203.7717.56.2031.7621141,构建于2021年8月7日) 当我面临内存不足的问题时,我正在监视Android Studio的内存消耗,我注意到多个“Java”进程正在运行,甚至一个进程

  • 它永远不会结束,应用程序也不会响应: 我已经检查了以下几点: 我的应用程序扩展了SpringBootServletInitializer 我将初学者tomcat依赖项放在提供的中 war名为“EdgeCustomerOfferStorageWeb.war”,实例端口为10080,因此我使用:http://server:10080/EdgeCustomerOfferStorageWeb/It不响应,