linux 当出现“OOMKilled”时,在137上排除docker Exit故障:假的

5lhxktic  于 2023-06-29  发布在  Linux
关注(0)|答案(2)|浏览(106)

我做了什么

1.已在AlmaLinux服务器上使用docker-compose up启动服务
1.注意到docker-compose logs的输出有一段时间没有更改
1.检查docker-compose ps

$ docker-compose ps
              Name                            Command                State     Ports
------------------------------------------------------------------------------------
mysupercoolsystem_api_1           python -m mysupercoolsyste ...   Exit 137
mysupercoolsystem_dev_1           sh -c jupyter lab --ip=0.0 ...   Exit 137
mysupercoolsystem_loader_1        /bin/sh -c python -m mysup ...   Exit 137
mysupercoolsystem_predictor_1     /bin/sh -c python -m mysup ...   Exit 137
mysupercoolsystem_trainer_1       /bin/sh -c python -m mysup ...   Exit 137

$ docker ps -a  # just to confirm
72708f3450   hub.nic.dk/nicecompany/mysupercoolsystem   "/bin/sh -c 'python …"   2 days ago    Exited (137) 2 days ago              mysupercoolsystem_trainer_1
3e286cabb0   jupyter/scipy-notebook:33add21fab64        "sh -c 'jupyter lab …"   2 days ago    Exited (137) 2 days ago              mysupercoolsystem_dev_1
246b87f0ac   hub.nic.dk/nicecompany/mysupercoolsystem   "/bin/sh -c 'python …"   2 days ago    Exited (137) 2 days ago              mysupercoolsystem_predictor_1
7d3297092c   hub.nic.dk/nicecompany/mysupercoolsystem   "python -m mysuperc …"   2 days ago    Exited (137) 2 days ago              mysupercoolsystem_api_1
2a07851f9c   hub.nic.dk/nicecompany/mysupercoolsystem   "/bin/sh -c 'python …"   2 days ago    Exited (137) 2 days ago              mysupercoolsystem_loader_1
  • 研究容器是否因内存不足而停止
  • 已检查的虚拟主机:Docker容器在单个虚拟(vcenter管理的)主机上运行。主机分配有20 GB的RAM,vcenter监视器显示RAM使用率峰值约为8 GB,不多不少。
    ***跟进:**与系统管理员交谈:未重新启动服务器或明确要求服务器终止任何进程。
  • docker info | grep Memory返回Total Memory: 19.37GiB
  • 检查每个容器与docker inspect <container_id>给出相同的"State",除了字段"FinishedAt"±0.05秒而变化。
"State": {
  "Status": "exited",
  "Running": false,
  "Paused": false,
  "Restarting": false,
  "OOMKilled": false,
  "Dead": false,
  "Pid": 0,
  "ExitCode": 137,
  "Error": "",
  "StartedAt": "2021-11-13T10:33:04.785566471Z",
  "FinishedAt": "2021-11-13T10:33:57.1xxxxZ"

1.重新检查了我的docker-compose.yml

$ cat docker-compose.yml
version: "3"
services:
  dev:
    image: jupyter/scipy-notebook:33add21fab64
    environment:
      - COMPONENT=develop
    volumes:
      - /opt/mysupercoolsystem:/home/jovyan/work
      - /media:/media
    ports:
      - "3333:3333"
    entrypoint: sh -c "jupyter lab --ip=0.0.0.0 --port=3333 --no-browser --allow-root"

  loader:
    image: hub.nic.com/nicecompany/mysupercoolsystem
    working_dir: "/app"
    volumes:
      - /media:/media

  trainer:
    image: hub.nic.dk/nicecompany/mysupercoolsystem
    environment:
      - COMPONENT=train
    working_dir: "/app"
    volumes:
      - models:/models

  predictor:
    image: hub.nic.dk/nicecompany/mysupercoolsystem
    environment:
      - COMPONENT=pred
    working_dir: "/app"
    volumes:
      - models:/models

  api:
    image: hub.nic.dk/nicecompany/mysupercoolsystem
    environment:
      - COMPONENT=api
    working_dir: "/app"
    ports:
      - "69:69"
    entrypoint: python -m mysupercoolsystem.web_api

volumes:
  models:

1.检查Dockerfile。注意:在docker-compose.yml中没有显式入口点的服务从Dockerfile继承入口点。

$ cat mysupercoolsystem/Dockerfile
FROM python:3.8
WORKDIR /app
COPY ./requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
COPY . /app
RUN pip install .
ENTRYPOINT python -m mysupercoolsystem

1.已检查similair issue(此问题的罪魁祸首是--abort-on-container-exit-flag。我没有使用任何旗帜)。

如何操作

  • 为什么服务退出?
  • 如何解决此错误?
  • 还有其他日志需要我检查吗?
  • 如果我在每个服务上添加restart: unless-stopped,除了通过docker logs自己的日志记录外,还有什么方法可以检查docker服务出口吗?
mhd8tkvw

mhd8tkvw2#

我在shell脚本的末尾有一个&& sleep 1h,用于通知它已经完成(在此节点上运行),并配置了一个pidof sleephealth-cmd。看起来像是我正在使用的Alpine容器中发生了一些变化,导致sleep没有作为额外的进程运行,最后dockers * 健康检查杀死了容器中的shell*。也导致了一个137(SIGKILL)退出代码,但没有被OOM杀手触发。

相关问题