Appengine不会继续,而是在空转时关闭

时间:2017-08-14 08:22:40

标签: java google-app-engine

我做了一个不和谐的机器人我尝试在appengine上进行操作,它运行良好然而当闲置超过30分钟时,appengine关闭实例因为 - 我相信问题是 - 自动缩放哪个应用引擎关闭了流量不活跃的实例以降低成本。根据java文档,您需要将app / project-project-project / project-1.0 / WEB-INF / appengine-web.xml中的应用程序的appengine-web.xml文件设置为手动缩放,这也控制了实例的数量。实例。但这似乎并没有解决问题。我几乎没有使用任何流量,而且我检查了我的实例统计信息,因为不活动而只是关闭了。

我从控制台分离的方式是通过java -jar project-1.0.jar&运行我的java应用程序。 &分离并使其自行运行(在这种情况下)。

激活应用程序并关闭控制台30分钟后,应用程序因自动缩放而关闭。

这是我的appengine-web.xml:

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application>wizardry-discord-bot</application><!-- unused for Cloud SDK based tooling -->
    <version>1</version><!-- unused for Cloud SDK based tooling -->
    <threadsafe>true</threadsafe>
    <runtime>java8</runtime>
  <manual-scaling>
    <instances>1</instances>
  </manual-scaling>
</appengine-web-app>

由于这不起作用,文档不清楚,所以我也将这个添加到src / main / appengine / app.yaml中的app.yaml,就像我读过的许多样本一样。 再次,文档不清楚,但他们说我也可以在这里指定手动缩放。我在这一点上迷失了什么是什么,哪个是哪里。

enter image description here

# [START_EXCLUDE]
# Copyright 2015 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# [END_EXCLUDE]

# [START runtime]
runtime: custom
env: flex

handlers:
- url: /.*
  script: this field is required, but ignored

runtime_config:  # Optional
  jdk: openjdk8
  server: jetty9

manual_scaling:
  instances: 1
# [END runtime]

我在这里做错了吗?我一般都是google云的新手。有点丢失。

编辑:更多: 文档说运行mvn appengine:deploy实际运行你的代码而不是编译和java -jar它。 https://cloud.google.com/java/getting-started/hello-world 但是,当我运行命令时:https://hastebin.com/magizutuho.sql

1 个答案:

答案 0 :(得分:0)

要使一个实例始终处于活动状态,您可以在app.yaml文件中应用它:

automatic_scaling:
   min_instances: 1
   max_instances: 1

但是,我想知道Discord库是否可能是一个问题。我正在使用一个用于node.js,有时客户端会断开连接而不会尝试重新连接。

我正在使用的一种解决方法是每30分钟对bot(在我的情况下为HTTP GET请求)执行一次ping操作,销毁客户端并再次登录。缺点是停机时间只有几秒钟,但是对于我的用例来说完全没问题。