我一直在尝试测试我要在App Engine上设置的项目。由于机密性,我无法指定我的确切代码,但它在教程之间进行了自定义:Scalable Video Transcoding(Github)和Using Cloud Pub/Sub with Python(Github)
本质上,它运行带有Flask的App Engine服务来处理通过psq排队任务的传入请求,以及运行psqworker来执行任务的工作服务。
测试服务本身效果很好。我正在使用的媒体在工作服务中进行了转码,并返回到我的云存储中。
问题是,在启动一小时后,无论我是否排队任何任务,每个工作器实例都会开始提升到99-100%的CPU使用率。当我SSH到一个实例时,psqworker就是原因。这在App Engine上非常糟糕,因为它想要扩展并添加更多实例(在启动一小时后反过来也会这样做)。我试图浏览Stackdriver日志,但无法找到任何明显的原因。
我也不确定为什么Ruby也在CPU上运行,如截图所示。它的意思是基于谷歌的python图像的自定义灵活运行时。
我在Windows机器上本地运行服务,CPU使用率没有飙升。
Dockerfile:
# The Google App Engine python runtime is Debian Jessie with Python installed
# and various os-level packages to allow installation of popular Python
# libraries. The source is on github at:
# https://github.com/GoogleCloudPlatform/python-docker
FROM gcr.io/google_appengine/python
RUN apt-get -y update && apt-get install -y libav-tools
# Create a virtualenv for dependencies. This isolates these packages from
# system-level packages.
RUN virtualenv /env -p python3.6
# Setting these environment variables are the same as running
# source /env/bin/activate.
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH
# Copy the application's requirements.txt and run pip to install all
# dependencies into the virtualenv.
ADD requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt
# # Add the application source code.
ADD . /app
CMD mkdir /tmp/audio
# CMD honcho start -f /app/procfile transcoder
CMD honcho start -f /app/procfile worker monitor
答案 0 :(得分:0)
在与其中一位开发人员联系后,结果显示CPU使用率是由于Linux上的grpc库存在的一些问题以及它们的源是如何分发的。
Workaround found in Github issue
安装所需的软件包时,可以通过构建它而不是仅仅获取二进制文件来通过pip安装grpcio软件包来解决这个问题。
在我的Dockerfile中,我在安装了其他要求之后添加了该行,如教程中所示:
RUN pip install grpcio --ignore-installed --no-binary grpcio
CPU问题似乎已得到解决。