我最近将我们的后端服务从 Heroku(业余级(8 欧元/月))移至 Scaleway(DEV-L,20 欧元/月)以及数据库(价格相似)。我们这样做是因为存在隐私保护和数据安全方面的所有问题。
为此,我们需要对应用程序进行容器化,我添加了一些额外的东西(Grafana/Prometheus 和 Elastic Stack)。
问题是,服务器现在慢了很多。我的意思是慢了很多。以前,对于非常复杂和大的查询,加载时间约为 3-5 秒,而现在有时则需要 20 到 25 秒。
你知道问题可能出在哪里吗?或者 Heroku 上的“dynos”只是经过了高度优化?我尝试关闭所有不需要的容器(只剩下 Nginx、certbot 和实际的后端),但这没有帮助。我还尝试升级服务器或数据库,这当然可以提高性能,但对于这么多钱来说,效果非常有限(最多 20%,150 欧元)。
此外,Grafana 告诉我服务器甚至没有达到最大容量。通常,CPU 使用率约为 50%(大多数时间)到最高 125%,后端本身从未超过 60%(如果有“复杂”请求)。
###
# BUIDLER
###
FROM python:3.6.12-alpine3.12 as builder
WORKDIR /usr/src/app
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN apk update \
&& apk add postgresql-dev gcc python3-dev musl-dev \
ca-certificates gcc postgresql-dev linux-headers \
libffi-dev jpeg-dev zlib-dev
RUN pip install --upgrade pip
COPY . .
COPY requirements.txt ./
RUN pip wheel --no-cache-dir --no-deps --wheel-dir /usr/src/app/wheels -r requirements.txt
#########
# FINAL #
#########
# pull official base image
FROM python:3.6.12-alpine3.12
# create directory for the app user
RUN mkdir -p /home/app
# create the app user
RUN addgroup -S app && adduser -S app -G app
# create the appropriate directories
ENV HOME=/home/app
ENV APP_HOME=/home/app/web
RUN mkdir $APP_HOME
WORKDIR $APP_HOME
# install dependencies
RUN apk update && apk add libpq postgresql-dev gcc python3-dev musl-dev
COPY --from=builder /usr/src/app/wheels /wheels
COPY --from=builder /usr/src/app/requirements.txt .
RUN pip install --no-cache /wheels/*
# copy project
COPY . $APP_HOME
# chown all the files to the app user
RUN chown -R app:app $APP_HOME
# change to the app user
USER app