很难在标题中进行总结,但是我有一个非常基本的Express应用程序,它在Google Compute Engine上使用Docker(FROM node:latest
)。该图像托管在容器注册表中。我实现了一个计算实例组和模板,并且使用的负载均衡器的最小实例数为2,最大实例数为4。健康检查很好。我可以使用附加的域与服务器联系,所有路由均按预期工作。
问题是,每当我不通过外部来源向服务器发送任何流量而让服务器“冷却”约20-30分钟时,该实例似乎有点“进入睡眠状态”,并且初始调用热身备份大约需要45秒钟才能获得响应。
首次呼叫后,所有后续呼叫都将花费预期的时间(几毫秒)。我本打算在生产中使用此服务器,但我设想每隔一段时间就会有人遇到这些长时间通话中的一个而放弃。有人遇到过这个问题吗?是什么原因导致此缓慢的初始请求?以下是我的GCP设置以及dockerfile
的一些屏幕截图:
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"]