2024-05-01(docker 部署的 jar包自动关闭)
查询运行情况:处于退出状态
docker ps -a
查询日志:看不出问题
docker logs -f --tail=1000 demo-java
查询关于java服务日志:Out of memory: Kill process 16236 (java) score 219 or sacrifice child
dmesg | grep java
可能就是这个原因内存溢出。
解决方案:1 设置挂掉后自动重启 ,不靠谱影响用户体验。
2 设置容器限制内存,重启容器,再设置个800m 试试
docker restart demo-java
docker update -m 700m demo-java 这个设置方法报错
Error response from daemon: Cannot update container 28a63247a3de2fce535524e7b79ea4e8bcb904ec9c61b65e54ce610052bf0012: Memory limit should be smaller than already set memoryswap limit, update the memoryswap at the same time
换成下面这个设置方法
docker update --memory 700m --memory-swap -1 demo-java
注意 docker update
命令所做的修改不会持久化。也就是说,容器重启后,它会恢复到原始的内存限制设置。(如果要一次性解决这通常是在 docker run
命令中指定的,或者在 Dockerfile 中定义的,或者是 Docker 守护进程的默认设置)。
突然发现自己还有个nacos在启动, nacos是java写的,所以之前的溢出的java 是nacos导致的。
使用top命令查看:
第一个java cpu占用率太高,关闭nacos后:
玛德 果然是nacos的原因。
终归还是服务器运行内存太小了,目前部署了ngxin fastDfs mysql rabiitmq 后端包 redis