瓶颈库作业停止执行

时间:2021-07-30 17:36:23

标签: node.js typescript aws-lambda redis bottleneck

我在 AWS Lamba 函数内的 Typescript 上使用 the bottleneck libary(启用了集群)。我们使用它来限制对外部 API 的请求。该库在一段时间内运行良好,直到在某个时候我开始作业停止运行。我看到此时 await requestLimiter.schedule() 调用正在阻塞,直到 lambda 超时。从那时起,传入的作业继续发生数小时(它们排队并且不运行),直到我手动刷新 AWS Redis 实例。

这是我创建瓶颈实例的方法:

this.requestLimiter = new Bottleneck({
        id: `request-limiter`,
        datastore: "redis",
        clearDatastore: false,
        maxConcurrent: 1,
        minTime: 133,
        clientOptions: {
          host: REDIS_HOST
          port: REDIS_PORT
        },
        trackDoneStatus: true
      });

这是我在日志中看到的排队但未执行的作业:

28 Jul 2021 07:09:04.909{
  "pid": 9,
  "level": 30,
  "message": "Event triggered: received",
  "job": [
    {
      "args": [],
      "options": {
        "priority": 5,
        "weight": 1,
        "expiration": null,
        "id": "job1"
      }
    }
  ],
  "msg": "bottleneck debug event",
  "time": "2021-07-28T07:09:04.566Z",
  "v": 0,
  "_level": "info"
}
28 Jul 2021 07:09:04.909{
  "pid": 9,
  "level": 30,
  "message": "Calling Redis script: init.lua",
  "job": [
    1627456144598,
    "qbrslv11ujd",
    0,
    "2.19.5",
    "maxConcurrent",
    "1",
    "minTime",
    "113",
    "highWater",
    "",
    "strategy",
    "1",
    "penalty",
    "",
    "reservoir",
    "",
    "reservoirRefreshInterval",
    "",
    "reservoirRefreshAmount",
    "",
    "reservoirIncreaseInterval",
    "",
    "reservoirIncreaseAmount",
    "",
    "reservoirIncreaseMaximum",
    "",
    "id",
    "request-limiter",
    "version",
    "2.19.5",
    "groupTimeout",
    "",
    "clientTimeout",
    "10000"
  ],
  "msg": "bottleneck debug event",
  "time": "2021-07-28T07:09:04.598Z",
  "v": 0,
  "_level": "info"
}
28 Jul 2021 07:09:04.909{
  "pid": 9,
  "level": 30,
  "message": "Calling Redis script: register_client.lua",
  "job": [
    1627456144601,
    "qbrslv11ujd",
    0
  ],
  "msg": "bottleneck debug event",
  "time": "2021-07-28T07:09:04.601Z",
  "v": 0,
  "_level": "info"
}
28 Jul 2021 07:09:04.909{
  "pid": 9,
  "level": 30,
  "message": "Calling Redis script: submit.lua",
  "job": [
    1627456144602,
    "qbrslv11ujd",
    "0",
    "1"
  ],
  "msg": "bottleneck debug event",
  "time": "2021-07-28T07:09:04.602Z",
  "v": 0,
  "_level": "info"
}
28 Jul 2021 07:09:04.909{
  "pid": 9,
  "level": 30,
  "message": "Event triggered: queued",
  "job": [
    {
      "args": [],
      "options": {
        "priority": 5,
        "weight": 1,
        "expiration": null,
        "id": "job1"
      },
      "reachedHWM": false,
      "blocked": false
    }
  ],
  "msg": "bottleneck debug event",
  "time": "2021-07-28T07:09:04.603Z",
  "v": 0,
  "_level": "info"
}
28 Jul 2021 07:09:04.909{
  "pid": 9,
  "level": 30,
  "message": "Draining job1",
  "job": {
    "args": [],
    "options": {
      "priority": 5,
      "weight": 1,
      "expiration": null,
      "id": "job1"
    }
  },
  "msg": "bottleneck debug event",
  "time": "2021-07-28T07:09:04.604Z",
  "v": 0,
  "_level": "info"
}
28 Jul 2021 07:09:04.909{
  "pid": 9,
  "level": 30,
  "message": "Calling Redis script: register.lua",
  "job": [
    1627456144604,
    "qbrslv11ujd",
    "8998iaiwo2j",
    "1",
    ""
  ],
  "msg": "bottleneck debug event",
  "time": "2021-07-28T07:09:04.604Z",
  "v": 0,
  "_level": "info"
}
28 Jul 2021 07:09:04.909{
  "pid": 9,
  "level": 30,
  "message": "Drained job1",
  "job": {
    "success": false,
    "args": [],
    "options": {
      "priority": 5,
      "weight": 1,
      "expiration": null,
      "id": "job1"
    }
  },
  "msg": "bottleneck debug event",
  "time": "2021-07-28T07:09:04.605Z",
  "v": 0,
  "_level": "info"
}

此后没有关于 job1 的其他日志。

这里有什么问题?任何指针和建议将不胜感激。如果您需要更多信息,请告诉我。谢谢!

0 个答案:

没有答案
相关问题