App Engine を使用して Unity から PubSub にデータをストリーミングしてから数日間経つと、大量の 502 エラーが発生し、作成されたインスタンスの数が増加し、そのため 1 日の支出制限を超えてしまいます。
インスタンスの増加
私が使用している Python スクリプト: https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/appengine/standard_python37/pubsub
すべてのエラーは HTTP POST リクエストであり、遅延は 30 秒を超えており、ログ メッセージは次のようになります。
このリクエストにより、アプリケーションの新しいプロセスが開始され、アプリケーション コードが初めて読み込まれました。そのため、このリクエストには、アプリケーションの通常のリクエストよりも時間がかかり、CPU を多く使用する可能性があります。
Flex 環境でのみ利用可能で、Standard 環境では利用できない準備チェックと活性チェックを調べるように勧められました。このエラーの原因は何でしょうか。また、回避するにはどうすればよいでしょうか。
ログの例:
{
httpRequest: {
status: 502
}
insertId: "5e2bf548000bc56fe5d27eec"
labels: {
clone_id: "00c61b117c17d8ad1566cc1788d5763552dbe5ace0c77a3523e4047bdc431b306a3840a5168f"
}
logName: "projects/x/logs/appengine.googleapis.com%2Frequest_log"
operation: {
first: true
id: "5e2bf52700ff069deff4c6f3400001737e626f6f74796661726d6c697665000133000100"
last: true
producer: "appengine.googleapis.com/request_id"
}
protoPayload: {
@type: "type.googleapis.com/google.appengine.logging.v1.RequestLog"
appEngineRelease: "1.9.71"
appId: "s~x"
cost: 3.2186e-8
endTime: "2020-01-25T07:59:04.771274Z"
finished: true
first: true
host: "x.appspot.com"
httpVersion: "HTTP/1.1"
instanceId: "00c61b117c17d8ad1566cc1788d5763552dbe5ace0c77a3523e4047bdc431b306a3840a5168f"
instanceIndex: -1
ip: "x"
latency: "33.337627s"
line: [
0: {
logMessage: "This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time. This request may thus take longer and use more CPU than a typical request for your application."
severity: "INFO"
time: "2020-01-25T07:59:04.770902Z"
}
]
megaCycles: "4387"
method: "POST"
pendingTime: "0.005315345s"
requestId: "5e2bf52700ff069deff4c6f3400001737e626f6f74796661726d6c697665000133000100"
resource: "/"
responseSize: "288"
startTime: "2020-01-25T07:58:31.433647Z"
status: 502
traceId: "2ee7b458fad62565bd5ed150e67647fc"
traceSampled: true
urlMapEntry: "auto"
userAgent: "Dalvik/2.1.0 (Linux; U; Android 5.1.1; SM-T360 Build/LMY47X) x SDK"
versionId: "3"
wasLoadingRequest: true
}
receiveTimestamp: "2020-01-25T07:59:04.772448343Z"
resource: {
labels: {
module_id: "default"
project_id: "x"
version_id: "3"
zone: "us12"
}
type: "gae_app"
}
severity: "INFO"
timestamp: "2020-01-25T07:58:31.433647Z"
trace: "projects/x/traces/2ee7b458fad62565bd5ed150e67647fc"
traceSampled: true
}
アプリ.yaml:
runtime: python37
entrypoint: gunicorn -b :$PORT main:app
#[START env]
env_variables:
PUBSUB_TOPIC: xx
# This token is used to verify that requests originate from your
# application. It can be any sufficiently random string.
PUBSUB_VERIFICATION_TOKEN: xx
#[END env]
要件.txt:
Flask==1.0.2
google-api-python-client==1.7.8
google-auth==1.6.3
google-cloud-pubsub==0.40.0
gunicorn==19.7.1
*注: 数日後、ログにエラーが表示されたとしても、インスタンスの増加数は AppEngine ダッシュボードに表示されなくなります。