因为部署实际情况和应用环境导致使用springboot+mybatisplus+tomcat+JDK1.8部署项目 将springboot打成war包部署,并且是多个war包将近二三十个程序 因为对于不同的服务器需要部署不同的war包 所以现在使用tomcat部署的时候每个war包程序都是单独的数据库连接池线程等等,导致现在占用内存特别大 有没有什么办法将多个war包所需内存需求降下来
配置tomcat参数-Xms -Xmx
不知道你这个问题是否已经解决, 如果还没有解决的话:由于每个WAR包都有独立的数据库连接池线程等资源,导致内存占用特别高,可以尝试以下几个方法来降低内存需求:
减少并优化数据库连接池线程:可以通过减少每个WAR包的数据库连接池线程的数量来降低内存占用。可以根据实际需求调整连接池的核心线程数、最大线程数和空闲时线程的存活时间等参数来优化连接池的使用,避免不必要的资源占用。
使用共享的数据库连接池:将多个项目共享一个数据库连接池,可以减少每个WAR包独立拥有的数据库连接池线程数量,从而降低内存占用。可以使用第三方的连接池管理工具,如HikariCP、Druid等,来管理连接池,并设置合适的参数来优化连接池的性能和内存占用。
JVM参数调优:通过调整JVM参数来优化内存使用。可以通过设置-Xms和-Xmx参数来限制JVM内存的初始大小和最大可用内存大小,根据实际情况来调整这两个参数的值。另外,还可以调整JVM的垃圾回收算法和相关参数,如-XX:+UseConcMarkSweepGC、-XX:CMSInitiatingOccupancyFraction等,来优化垃圾回收的性能和内存占用。
使用更轻量级的容器:考虑使用更轻量级的容器,如Undertow、Netty等,替代Tomcat作为项目的容器。这些容器通常具有更低的内存占用和更高的性能,在一定程度上可以降低内存需求。
优化代码和数据访问方式:通过优化代码和数据访问方式来减少内存占用。可以使用适当的缓存策略来减少对数据库的频繁访问,避免重复查询相同的数据;还可以对代码进行优化,避免使用过多的临时变量和不必要的对象实例化,减少内存占用。
需要注意的是,以上方法仅为一些建议,具体的优化方式需要根据实际情况和性能测试来确定,以确保在降低内存需求的同时不影响系统的性能和稳定性。如果以上方法不能解决问题,可能需要考虑采用其他技术或架构调整来降低内存需求。
采用Druid,公用数据库连接池