总结反思在部署上线短链接项目过程中所踩到的坑

总结反思在部署上线短链接项目过程中所踩到的坑

不容易,自己从零到一手敲的短链接项目,中间遇到了不少的曲折,终于部署上线了。
项目的上线地址:短链接系统

由于没有 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 调优么?
调优的目的要让项目运行的稳定,老是崩溃谁受的了啊。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/668593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019年江苏省职教高考计算机技能考试——一道程序改错题的分析

题目:函数将str字符串中的5个数字字符串转换为整数,并保存在二维数组m的最后一行,各元素为3、-4、16、18、6。并经函数move处理后,运行结果如下: 18 6 3 -4 16 16 18 6 3 -4 -4 16 …

香港倾斜模型3DTiles数据漫游

谷歌地球全香港地区倾斜摄影数据,通过工具转换成3DTiles格式,将这份数据完美加载到三维数字地球Cesium上进行完美呈现,打造香港地区三维倾斜数据覆盖,完美呈现香港城市壮美以及维多利亚港繁荣景象。再由12.5米高分辨率地形数据&am…

【开源】JAVA+Vue+SpringBoot实现二手车交易系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 二手车档案管理模块2.3 车辆预约管理模块2.4 车辆预定管理模块2.5 车辆留言板管理模块2.6 车辆资讯管理模块 三、系统设计3.1 E-R图设计3.2 可行性分析3.2.1 技术可行性分析3.2.2 操作可行性3.2.3 经济…

02.05

1.单链表 main #include "1list_head.h" int main(int argc, const char *argv[]) { //创建链表之前链表为空Linklist headNULL;int n;datatype element;printf("please enter n:");scanf("%d",&n);for(int i0;i<n;i){printf("ple…

IDEA新建文件夹后右击不能创建class类排错方法

目录 1 查看自身文件名是否为关键词 2 查看是否被“蓝色文件夹”给包含了 3 检查设置那边的class模板 4 报错解决 1 查看自身文件名是否为关键词 如下使用了 Java中的关键词"class"所以才无法创建包 ---------------------------------------------------------…

二维差分数组的概念

前面介绍了一维差分数组的用法及案例&#xff0c; 差分数组概念及基础用例1 差分数组用例2 下面介绍一下二维差分数组的概念。 构造二维差分数组&#xff1a; 创建与原始矩阵相同大小的差分数组第一行和第一列就是类似一维差分数组的写法&#xff0c;后 - 前剩下的就是减去差…

easyexcle 导出csv

导入jar <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version></dependency>代码 private static List<List<String>> head() {List<List<String>&g…

Linux cp命令(cp指令)解析

文章目录 Linux cp命令解析基本语法常用参数-i (交互式复制)-r 或 -R (递归复制)-v (详细输出)-p (保留文件属性) 高级应用复制多个文件到一个目录使用通配符复制多个文件 进阶讲解 Linux cp命令解析 Linux操作系统中&#xff0c;cp是一个非常实用且常见的命令&#xff0c;它的…

量化交易学习4(投资组合基本认识)

1 如何衡量投资组合的收益率 1.1 投资组合收益率的计算方法 1.2 投资组合的绝对收益率和相对收益率 2 如何衡量投资组合的风险 2.1 风险的定义 风险是指在未来可能发生的不确定性事件所带来的潜在损失。 在投资领域中&#xff0c;风险通常指投资所面临的不确定性和潜在的损失…

自学Python第二十二天- Django框架(六) django的实用插件:cron、APScheduler

django-crontab 和 django-cron 有时候需要django在后台不断的执行一个任务&#xff0c;简单的可以通过中间件来实现&#xff0c;但是中间件是根据请求触发的。如果需要定时执行任务&#xff0c;则需要使用到一些插件。 django-crontab 和 django-cron 是常用的用于处理定时任…

hive表加字段

目录 1.给表添加字段2.为什么使用cascade3.使用场景 1.给表添加字段 alter table database.tablename add columns(字段名 字段类型 comment 字段中文含义) cascade;2.为什么使用cascade 在Hive中&#xff0c;当你想要修改表结构&#xff0c;例如添加字段时&#xff0c;可能会…

群晖NAS开启FTP服务结合内网穿透实现公网远程访问本地服务

⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 文章目录 ⛳️ 推荐1. 群晖安装Cpolar2. 创建FTP公网地址3. 开启群晖FTP服务4. 群晖FTP远程连接5. 固定FTP公网地址6. 固定FTP…

【优先级队列(大顶堆 小顶堆)】【遍历哈希表键值对】Leetcode 347 前K个高频元素

【优先级队列&#xff08;大顶堆 小顶堆&#xff09;】【排序】Leetcode 347 前K个高频元素 1.不同排序法归纳2.大顶堆和小顶堆3.PriorityQueue操作4.PriorityQueue的升序&#xff08;默认&#xff09;与降序5.问题解决&#xff1a;找前K个最大的元素 &#xff1a;踢走最小的&…

HashCat 恢复Excel、Word、PPT密码保姆教程

HashCat 恢复Excel、Word、PPT密码 一、流程 整体需要两个步骤 先用office2john.py获取下文件的hash值 python office2john.py 1.xlsx > hash这个命令需要你电脑有python环境&#xff0c;然后在cmd命令窗口中执行此命令就行 文件链接&#xff1a;https://github.com/magnu…

Python 轻量级定时任务调度:APScheduler

简述 APscheduler (Advanced Python Scheduler)&#xff0c;作用为按指定的时间规则执行指定的作业。提供了基于日期date、固定时间间隔interval 、以及类似于Linux上的定时任务crontab类型的定时任务。该框架不仅可以添加、删除定时任务&#xff0c;还可以将任务存储到数据库…

Linux内核编译-ARM

步骤一、下载源码及交叉编译器后解压 linux kernel官网 ARM GCC交叉编译器 步骤二、安装软件 sudo apt-get install ncurses-dev sudo apt-get install flex sudo apt-get install bison sudo apt install libgtk2.0-dev libglib2.0-dev libglade2-dev sudo apt install libs…

数据湖Paimon入门指南

一、主键表&#xff08;Primary Key Table&#xff09; Merge Engines sink-upsert-realize可能会导致不正常的现象。当输入乱序时&#xff0c;我们建议您使用序列字段来纠正无序。建议设置为None set table.exec.sink.upsert-materialize NONE Deduplicate&#xff08…

ArrayList和LinkedList的区别是什么

ArrayList 和 LinkedList 分别代表了两类不同的数据结构&#xff1a;动态数组和链表。它们都实现了 Java 的 List 接口&#xff0c;但是有着各自独特的特点和性能表现。 1. 数据结构 ArrayList 是基于可调整大小的数组实现的。它允许快速随机访问&#xff0c;因为内部元素可通…

使用useRoutes提示invalid hook call

包版本&#xff1a; 问题&#xff1a; 今天用vitereactts重新搭建项目时报错 代码&#xff1a; router.tsx import { useRoutes } from react-router-dom; import Home from "../pages/home/index";const routers[{path: /,element: <Home/> } ] // const…

c++ 语法 运算符重载

不要滥用运算符重载 内置类型不能使用运算符重载 号运算符重载 #include <iostream> #include "mathutil.hpp" #include <string> #include "People.hpp" #include "Phone.hpp" using namespace std; class Fclass{ public:int…