记一次奇葩的故障
今天在阿里云服务器部署项目的时候,多次出现了在上传部署好项目后和另一个部署好的项目出现冲突,之后就自动退出了项目
依次进行了以下的排查修改:
1.将Alibaba Cloud Toolkit中的命令进行修改
2.将两个项目的服务器端口号进行修改
尝试了两个修改后还是没有解决,最终排查发现是系统出现OOM的问题
OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError。看下关于的官方说明: Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector. 意思就是说,当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,就会抛出这个error(注:非exception,因为这个问题已经严重到不足以被应用处理)。
至于为什么会出现OOM的问题,只有两种原因,分别是:
1.分配的少了:比如虚拟机本身可使用的内存(一般通过启动时的VM参数指定)太少。
2.应用用的太多,并且用完没释放,浪费了。此时就会造成内存泄露或者内存溢出。
如何解决OOM?
- 设置JVM参数-XX:+HeapDumpOnOutOfMemoryError,设定当发生OOM时自动dump出堆信息。不过该方法需要JDK5以上版本。
- 使用JDK自带的jmap命令。"jmap -dump:format=b,file=heap.bin " 其中pid可以通过jps获取。
这里手动感谢https://blog.csdn.net/qq_42447950/article/details/81435080的帮助