在打包项目并上传到服务器时遇到的问题

175 阅读2分钟

问题

今天在使用Maven工具进行项目打包时,发现控制台抛出 FileNotFoundException 异常,

image-20230703165522375.png 但是打包结果显示为 BUILD SUCCESS,说明打包成功了,于是我就忽略了这段异常信息。

image-20230703170057227.png

当我把 jar包 放到云服务器上去运行时发现在加载索引那块卡住了

image-20230703170434714.png

由于这里显示的卡住的日志信息和前面打包时抛出异常信息的位置是一样的,我以为是打包出现了问题,导致程序启动时卡住了。

我查看了当前服务器里运行的 Java进程

image-20230703171206784.png

发现当前程序确实未成功启动,但是这里居然有多个相同的程序在运行,于是我把他们都关闭了

image-20230703171613399.png

然后我重启了下服务器,又将程序重新打包然后上传到服务器运行,发现这回居然成功了???

image-20230703172749672.png

这就百思不得其解了,于是我先去百度了一下,然后问了问前辈,

得知,这里出现的 加载索引时 卡住的原因可能是服务器内存不足导致的,于是我去云服务器控制台看了下

image-20230703173614759.png

我服务器是2G的内存,在上传这个项目前就已经有 1.5G 被占用了,而当我上传时,内存使用量来到了 1.7G,因为索引数据文件本身就有一百多MB,这里 加载索引开始 后就卡住了,是因为内存几乎快满了,所以没有立即启动成功,

总结

1、这里通过Maven进行项目打包时,出现的系统找不到指定路径的异常,可能是在打包时自动帮我们检测了文件路径的可达性,因为我这里的路径是切换到了云服务器上,所以会有这个问题,但是打包结果显示为成功,说明打包没有问题。

2、上传到服务器上运行时在加载索引时卡住了,是因为服务器内存不足导致的,关闭一些非必要运行的进程可以释放内存空间。

3、通过 telnet 主机 端口号 命令可以远程连接服务器端口测试是否能访问。

4、当使用云服务器时,一定要开启操作系统自带的防火墙功能,虽然云服务控制台里的防火墙功能可以帮我们做一些保障,但是开启服务器操作系统本地的防火墙做一个双重保障更好点。

以下是一些常用的操作防火墙的命令:

  • 启动防火墙:systemctl start firewalld
  • 关闭防火墙: systemctl stop firewalld
  • 检查防火墙状态:systemctl status firewalld

服务器防火墙端口操作

  • firewall-cmd --permanent --list-port

  • firewall-cmd --reload

  • firewall-cmd --permanent --zone=public --add-port=3306/tcp

  • firewall-cmd --permanent --zone=public --remove-port=9103/tcp