Локальный запуск FastAPI на Docker имеет большое время отклика.Linux

Ответить
Anonymous
 Локальный запуск FastAPI на Docker имеет большое время отклика.

Сообщение Anonymous »

Я запускаю FastAPI через Docker-контейнер, и когда я запускаю этот Docker локально, он кажется очень медленным. Однако когда я развертываю эластичный экземпляр beanstalk на AWS, он работает достаточно быстро. Я увеличил процессор и память, но независимо от того, насколько я увеличиваю свой процессор, мои образы докеров используют максимум 5%. Может быть, в этом может быть проблема?
Я нашел другое сообщение о том, что это потенциально может быть образ докера, который вызывает проблемы с производительностью, но я считаю, что это обычно происходит, если вы используете альпийский образ. Статья по этому поводу здесь
Я также нашел другой пост, в котором могло бы быть показано, как я --relod API, но я также позаботился о том, чтобы включить правильный каталог, например: -reload --reload-dir ./app но не увидел никаких улучшений.
Запросы на моем эластичном бобовом стебле занимают около 2-3 секунд, но те же запросы локально занимают около ~30 с.
Я использую ноутбук с архитектурой AMD Ryzen 7040Series.
Я использую python:3-11-slim для построения своей базы контейнер. Я также пробовал python:3-11-slim-bookworm, но никаких улучшений тоже не было.

Код: Выделить всё

FROM python:3.11-slim

# intall rust + dependencies for c2patool
RUN apt-get update && apt-get upgrade -y
RUN apt-get install build-essential -y
RUN apt-get install -y curl gcc g++ libc-dev ffmpeg libsm6 libxext6 openssl libssl-dev pkg-config make git perl cpanminus
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PKG_CONFIG_ALLOW_CROSS=1
ENV PATH="/root/.cargo/bin:${PATH}"
RUN rustup target add x86_64-unknown-linux-musl
RUN cargo install c2patool

EXPOSE 80

# Set working directory to function root directory
ENV WORKDIR=/test

# Set working directory to function root directory
WORKDIR $WORKDIR

COPY ./requirements.txt $WORKDIR

RUN pip install -r requirements.txt

# Copy server code
COPY ./ $WORKDIR

а затем у меня есть отдельный контейнер, который извлекает базовый контейнер и запускает сценарий, содержащий это содержимое

Код: Выделить всё

#!/bin/bash

# Start Celery worker
celery -A worker worker --loglevel=INFO &

# Start FastAPI app
uvicorn app.main:app --host 0.0.0.0 --port 80 --reload
Я также веду статистику докеров, и это типичные результаты

Код: Выделить всё

CONTAINER ID   NAME              CPU %     MEM USAGE / LIMIT     MEM %     NET I/O         BLOCK I/O        PIDS
42a39f5dbac3   focused_hermann   1.31%     2.974GiB / 14.81GiB   20.07%    1.4MB / 782kB   207MB / 9.98MB   84
Будем благодарны за любую информацию или помощь!
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/791 ... onse-times
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»