总结反思在部署上线短链接项目过程中所踩到的坑
不容易,自己从零到一手敲的短链接项目,中间遇到了不少的曲折,终于部署上线了。
项目的上线地址:短链接系统
由于没有 2 核 4 g 服务器,就使用了两台 2 核 2 g 丐版服务器,一台用来部署中间件,一台用来部署后端、前端项目。
部署这块也是搞了半天,中间走了很长时间的弯路,遇到了不少的问题,解决问题。
在这个过程中,提升了自己的能力和经验。
项目在本地 IDEA 运行没问题,打成 jar 包部署到服务器上面的时候,报 404 Not Found 错误
踩到最大、耗时最久的坑,当时非常的困惑啊,怎么会报个 404 错误呢?
排查了好久。。。
难道是 strict-origin-when-cross-origin 跨域问题啊。
排查下来也不是!
慢慢排查,首先请求应该能打到网关上面,然后继续排查。
脑子乱了!心烦意乱了
会不会是 jdk 版本不一样?应该也不是这个问题,都是 Jdk 17
排查下来也不是!
想到先在本地启动 jar 包,测试一下有没有问题
开始怀疑会不会是 Maven Jar 包,就有问题?
排查到请求到网关了,但是没有打到聚合服务上面,这是为什么呢?
根本原因是:只要在 aggregation 项目里面加上 spring-boot-maven-plugin 打包插件就行了,
admin 和 project 项目的 pom.xml 中就不要加 spring-boot-maven-plugin 打包插件了。
不然 aggregation 项目打出来的 jar 包有问题。
记得刷新 Maven。
Maven 打包时候的注意点
直接在 root 父模块下面 clean、install 就行了。
不要在单独的模块下面 clean、install,这样打出来的 jar 包是有问题的。
Docker 部署 Nacos 启动失败,怎么解决?
原因:Nacos 默认启动的参数 JVM_XMS 堆内存大小竟然是 1 G?这让我这一共才 2 G 的丐版服务器怎么承受的住啊。
解决方法:在启动 Nacos 的时候,增加 JVM_XMS/JVM_XMX 启动参数,限制启动运行内存,具体设置多大就看自己的服务器配置,酌情设置了。
docker run \
-d -p 8848:8848 \
-p 9848:9848 \
--name nacos2 \
-e MODE=standalone \
-e TIME_ZONE='Asia/Shanghai' \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
nacos/nacos-server:v2.1.2
java -jar 启动项目的时候的坑
跟上面启动 Nacos 失败同理,gateway 项目给的内存太大了,导致短链接项目能使用的内存就少了。
gateway 项目给 300 m 就可以了,短链接项目多给一点内存。
但是注意,分配内存的时候,不要全分配完,最好给系统剩余下一些内存。
一开始把剩余所有的内存都给短链接项目了,但是项目非常的不稳定,一会就崩溃了。
后来分配内存的时候,给系统剩余下一些内存,项目就很稳定了,就没有崩溃了。
nohup /usr/local/java/zulu17.44.53-ca-jdk17.0.8.1-linux_x64/bin/java \
-Xms300m -Xmx300m \
-Dfile.encoding=utf-8 \
-jar /home/shortlink/shortlink-gateway.jar > /home/shortlink/logs/shortlink-gateway.file 2>&1 &nohup /usr/local/java/zulu17.44.53-ca-jdk17.0.8.1-linux_x64/bin/java \
-Xms1024m -Xmx1024m \
-Dfile.encoding=utf-8 \
-jar /home/shortlink/shortlink-aggregation.jar > /home/shortlink/logs/shortlink-aggregation.file 2>&1 &
Navicat 闲置时间过长,在查询会卡死
原因:连接太长时间没有使用,断开了
解决方法:配置每隔一段时间,就去维持一下连接
具体的步骤可以看下面的文章:
https://blog.csdn.net/qq_40994734/article/details/107344444
反思总结
在部署项目的过程中,越发认识到内存太珍贵了,内存的合理分配很关键。
难道这就是常说的 JVM 调优么?
调优的目的要让项目运行的稳定,老是崩溃谁受的了啊。