多个springboot项目通过tomcat部署内存太大

因为部署实际情况和应用环境导致使用springboot+mybatisplus+tomcat+JDK1.8部署项目 将springboot打成war包部署,并且是多个war包将近二三十个程序 因为对于不同的服务器需要部署不同的war包 所以现在使用tomcat部署的时候每个war包程序都是单独的数据库连接池线程等等,导致现在占用内存特别大 有没有什么办法将多个war包所需内存需求降下来

配置tomcat参数-Xms -Xmx

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你看下这篇博客吧, 应该有用👉 :Tomcat结合mybatis简单实现用户登录注册功能
  • 除此之外, 这篇博客: springBoot+tomcat+mybatis项目搭建中的 1 前言 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    由于每个WAR包都有独立的数据库连接池线程等资源,导致内存占用特别高,可以尝试以下几个方法来降低内存需求:

    1. 减少并优化数据库连接池线程:可以通过减少每个WAR包的数据库连接池线程的数量来降低内存占用。可以根据实际需求调整连接池的核心线程数、最大线程数和空闲时线程的存活时间等参数来优化连接池的使用,避免不必要的资源占用。

    2. 使用共享的数据库连接池:将多个项目共享一个数据库连接池,可以减少每个WAR包独立拥有的数据库连接池线程数量,从而降低内存占用。可以使用第三方的连接池管理工具,如HikariCP、Druid等,来管理连接池,并设置合适的参数来优化连接池的性能和内存占用。

    3. JVM参数调优:通过调整JVM参数来优化内存使用。可以通过设置-Xms和-Xmx参数来限制JVM内存的初始大小和最大可用内存大小,根据实际情况来调整这两个参数的值。另外,还可以调整JVM的垃圾回收算法和相关参数,如-XX:+UseConcMarkSweepGC、-XX:CMSInitiatingOccupancyFraction等,来优化垃圾回收的性能和内存占用。

    4. 使用更轻量级的容器:考虑使用更轻量级的容器,如Undertow、Netty等,替代Tomcat作为项目的容器。这些容器通常具有更低的内存占用和更高的性能,在一定程度上可以降低内存需求。

    5. 优化代码和数据访问方式:通过优化代码和数据访问方式来减少内存占用。可以使用适当的缓存策略来减少对数据库的频繁访问,避免重复查询相同的数据;还可以对代码进行优化,避免使用过多的临时变量和不必要的对象实例化,减少内存占用。

    需要注意的是,以上方法仅为一些建议,具体的优化方式需要根据实际情况和性能测试来确定,以确保在降低内存需求的同时不影响系统的性能和稳定性。如果以上方法不能解决问题,可能需要考虑采用其他技术或架构调整来降低内存需求。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

采用Druid,公用数据库连接池