springboot打包成jar包部署到linux服务器,部署报错如下所示:
发现free空闲空间只有349M,可交换空间137M。 2)top
推测:idea启动正常,本地jar启动也正常,服务器空闲内存空间过小,初步推测可能由于内存过小的原因。
验证: 1)部署另外一台内存空间较大的服务器,启动测试,java -jar test.jar 启动正常无问题。 2)java -Xms1024m -Xmx1024m -jar app.jar & 设置jvm参数 建议初始化堆的大小和最大堆的大小设置一致,减少GC。
排查二 分析:将内存溢出问题稍微放下,看上面的抛出异常的地方。推测可能跟注入的依赖有关联。据网上资料尝试下面的解决方法: 将maven中mysql-connector-java的版本指定为5.1.42.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
</dependency>
SpringBoot的Maven依赖中不需要自己添加版本号,这是因为SpringBoot的父项目的父项目已经帮我们配置好了。 如何查看默认的版本号?在pom.xml里找到spring-boot-starter-parent,按CTRL加鼠标左键进入其父项目
可以在父项目文件找到这个配置,按相同的方式查看。
后我们可以看到一大串的版本号:
分别找下hibernate和mysql连接驱动的默认版本号:
这个错误产生的原因是mysql驱动的版本太高,hibernate版本兼容性问题。重新打包部署,未解决,排除此种可能。
排查三 分析通过比较之前的jar包后发现,jar包大小变为98M,之前48M,增加了两倍,后对比发现,resoureces下面放了sql大文件,打包时一起打包进去了,删除后打包测试,正常。
推测:打包的大小导致了内存空间小时启动异常。
1)服务器内存空间太小导致 2)jar包打包没排除不需要的大文件,导致启动时所占内存空间过大所导致
本文由来源 jackaroo2020,由 javajgs_com 整理编辑,其版权均为 jackaroo2020 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。