30-45 секунд ответа на первоначальный вызов приложения Docker Node, размещенного в Google Compute Engine - PullRequest
1 голос
/ 11 марта 2019

Трудно подвести итог в заголовке, но у меня есть очень простое приложение Express, использующее Docker (FROM node:latest) в Google Compute Engine. Изображение размещается в реестре контейнера. У меня есть группа и шаблон экземпляров вычислений, и я использую балансировщик нагрузки с min: 2, max: 4 экземплярами. Проверка здоровья хорошая. Я могу связаться с моим сервером, используя домен, который я подключил, и все маршруты работают как положено.

Проблема заключается в том, что каждый раз, когда я позволяю серверу «остывать» в течение примерно 20-30 минут, не отправляя ему трафик из внешних источников, экземпляр, похоже, как бы «засыпает» и при первоначальном вызове прогрев его занимает около 45 секунд, чтобы получить ответ.

После первоначального вызова все последующие вызовы занимают ожидаемое время (пару миллисекунд). Я планировал использовать этот сервер в производственной среде, но время от времени я предполагаю, что кто-то попадется на один из этих долгих звонков и сдастся. Кто-нибудь сталкивался с этим вопросом раньше? Что будет вызывать этот медленный начальный запрос? Ниже приведены некоторые скриншоты моих настроек GCP, а также мои dockerfile:

instances

group

template

lb

FROM node:latest

ENV DEBIAN_FRONTEND=noninteractive

ENV appDir /var/www/app

RUN mkdir -p /var/www/app
WORKDIR ${appDir}

COPY package*.json /var/www/app/

# Install needed deps and clean up after
RUN apt-get update
RUN apt-get install -y -q --no-install-recommends \
    apt-transport-https \
    build-essential \
    ca-certificates \
    curl \
    g++ \
    gcc \
    git \
    make \
    nginx \
    sudo \
    wget \
    locales \
    qtbase5-dev \
    libcairo2-dev \
    libpoppler-qt5-dev \
    poppler-data \
    && rm -rf /var/lib/apt/lists/* \
    && apt-get -y autoclean

COPY . .

# install npm dependencies and pm2
RUN npm install --only=production && npm install -g pm2

EXPOSE 8080

CMD ["npm", "start"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...