Appengine Backend停止从推送队列处理任务

时间:2018-04-26 14:13:31

标签: java google-app-engine

自从过去1个月以来,我们开始面临这个问题,AppEngine后端随意停止处理任何工作。 我见过的最接近的其他Q是this onethis,但没有任何用处。 我的推送队列配置是

<queue>
  <name>MyFetcherQueue</name>
  <target>mybackend</target>
  <rate>30/m</rate>
  <max-concurrent-requests>1</max-concurrent-requests>
  <bucket-size>30</bucket-size>
  <retry-parameters>
    <task-retry-limit>10</task-retry-limit>
    <min-backoff-seconds>10</min-backoff-seconds>
    <max-backoff-seconds>200</max-backoff-seconds>
    <max-doublings>2</max-doublings>
  </retry-parameters>
</queue>

标准Java App Engine,包含多个模块,其中一个是带有基本缩放的后端,B4。

<runtime>java8</runtime>
<threadsafe>true</threadsafe>
<instance-class>B4</instance-class>
<basic-scaling>
  <max-instances>2</max-instances>
</basic-scaling>

注意,为了解决这个问题,我尝试了以下但无济于事:

  1. 从7到8更新了java - 没有工作
  2. 从早期的B1更改为B4 - (认为这可能是内存问题,但在日志中没有任何内容) - 没有工作
  3. 铲斗尺寸为15时,将队列处理速度更改为低至15 / m。
  4. 将max-instances从之前的1更改为2,希望如果至少有一个实例挂起,另一个应该能够处理,但无济于事。我注意到(今天)当这个问题发生时,第二个实例只有2个请求(另一个有1400+),但是新实例没有从队列中获取剩余的任务。 ETA的任务不断增加。
  5. 将Java Appengine sdk从早期的1.9.57更新为最新的1.9.63
  6. 行为:过了一会儿(现在几乎每天一次),后端只会停止响应,此队列中的任务将保持原样。只有继续的方法是从控制台中终止后端实例,然后新实例开始处理任务。这些任务是获取数据的简单http调用。队列通常在任何时间从1个任务到15-20个任意位置。注意到即使低至3-4,它有时也会失速。

    日志根本不显示任何内容,没有任何滚动。仅当删除后端实例时,日志才会显示/ task已通过控制台终止。没有内存,没有崩溃,没有404。

    我捕获的早期日志和屏幕截图: Requests by type Traffic

    我无法添加更多图片,但以下是UtilizationMemory Usage&amp; most recent memory usage之后我删除了实例并恢复了任务。

    此次和最近的其他经历动摇了我对Google App Engine的信心。我究竟做错了什么? (这个具有队列配置的B1后端设置已经使用多年了!)

0 个答案:

没有答案