Django и gunicorn в docker-compose потребляют много ресурсов (память - CPU)

У меня есть 3 контейнера, которые используют один и тот же код (WSGI - ASGI - Celery). Все работает хорошо, но когда я проверяю статистику docker stats docker stats я обнаружил, что WSGI потребляет гораздо больше ресурсов, чем остальные

enter image description here

Контейнеры развернуты на дроплете DigitalOcean без домена, только IP

docker-compose.yml

version: "3.7"

services:
  db:
    build:
        context: .
        dockerfile: ./docker/database/master/Dockerfile
    restart: always
    ports:
      - ...
    volumes:
      - ...
    environment:
      - ...

  replica:
    build:
        context: .
        dockerfile: ./docker/database/replica/Dockerfile
    restart: always
    environment:
      - ...
    
  replica1:
    build:
        context: .
        dockerfile: ./docker/database/replica/Dockerfile
    restart: always
    environment:
      - ...

  backend:
    restart: unless-stopped
    build:
      context: .
      dockerfile: ./docker/backend/Dockerfile_wsgi
    entrypoint: /app/docker/backend/wsgi_entrypoint.sh
    volumes:
      - static_volume:/app/backend/server/django_static
      - static_image:/app/backend/server/media
    expose:
      - 8000
    environment:
      - ...
    depends_on:
      - db

    links:
      - redis
      - db
      - cere

  asgiserver:
    restart: always
    build:
      context: .
      dockerfile: ./docker/backend/Dockerfile
    entrypoint: /app/docker/backend/asgi.entrypoint.sh
    volumes:
      - static_volume:/app/backend/server/django_static
      - static_image:/app/backend/server/media
    environment:
      - ...

    depends_on:
      - db
    links:
      - redis
      - db
      - cere
    expose:
      - 9000

  redis:
    image: "redis:alpine"
    restart: unless-stopped
    command: redis-server /usr/local/etc/redis/redis.conf
    volumes:
      - ./docker/redis/redis.conf:/usr/local/etc/redis/redis.conf
    expose:
      - 6379

  cere:
    image: "redis:alpine"
    restart: unless-stopped
    command: redis-server /usr/local/etc/redis/redis.conf
    volumes:
      - ./docker/redis/redis_1.conf:/usr/local/etc/redis/redis.conf
    expose:
      - 6380

  celery:
    restart: unless-stopped
    build:
      context: .
      dockerfile: ./docker/backend/Dockerfile_celery
    entrypoint: /app/docker/backend/celery-entrypoint.sh
    environment:
      - ...
    depends_on:
      - asgiserver
      - backend
      - cere
    links:
      - db
      - cere

  nginx:
    restart: unless-stopped
    build:
      context: .
      dockerfile: ./docker/nginx/Dockerfile
    ports:
      - 80:80
      - 443:443
    volumes:
      - static_volume:/app/backend/server/django_static/
      - static_image:/app/backend/server/media

    depends_on:
      - asgiserver
      - backend

volumes:
  static_volume: {}
  static_image: {}
  postgres_data:
  postgres_portal:

Docker_wsgi

FROM python:3.8-slim


WORKDIR /app
ADD ./webserver/requierments.txt /app/backend/

RUN pip3 install --upgrade pip
RUN python3 -m pip install --upgrade Pillow
RUN pip3 install -r backend/requierments.txt
RUN pip install gunicorn

ADD ./webserver /app/backend
ADD ./docker /app/docker


RUN chmod +x /app/docker/backend/wsgi_entrypoint.sh

wsgi_entrypoint.sh

#!/usr/bin/env bash

chmod +x wsgi_entrypoint.sh


until cd /app/backend/server
do
    echo "Waiting for server volume..."
done

until python3 ./manage.py migrate 
do
    echo "Waiting for db to be ready..."
    sleep 2
done

python3 ./manage.py collectstatic --noinput

gunicorn server.wsgi --bind 0.0.0.0:8000 --workers 4 --threads 4

.dockerignore настроен правильно, и время сборки довольно быстрое. И я все еще не знаю, почему Django потребляет все это

Вернуться на верх