[实战]Docker应用自动重启

场景

Java应用,在凌晨定时任开始时运行一段时间后,会自动重启,导致定时任务失败。该应用使用Docker部署

分析

Docker应用运行一段时间自动重启可能的原因为容器分配的资源(如CPU、内存)不足,系统可能会杀死容器进程以释放资源。Docker随后可能会根据重启策略重启容器。

采用docker stats命令监控容器的资源使用情况, 同时手动触发定时任务。观察内存使用情况

发现 MEM USAGE 会接近LIMIT,判断为超内存导致的Docker重启

解决方案

去掉或增加Docker容器内存LIMIT的限制。

1、若采用Docker Compose则修改配置文件

    deploy:
      resources:
        limits:
          memory: 12288M

2、若使用Docker则修改已运行容器的内存限制,使用 docker update 命令来动态调整内存限制。例如,如果您想要将一个已运行的容器的内存限制增加到1GB,可以使用以下命令:
docker update -m 1024m my-container

创建容器时设置内存限制
当您创建一个新的容器时,可以使用 docker run 命令,并配合 -m 或 --memory 参数来设置内存限制。例如,如果您想要创建一个使用512MB内存的Nginx容器,可以使用以下命令:
docker run -m 512m -d --name my-nginx nginx

你可能感兴趣的:(docker,容器,运维)