微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Node.js 和 Redis使用 Bull 和 Throng运行多个 Worker Dynos (Heroku) 时超出 R14 内存配额

如何解决使用 Node.js 和 Redis使用 Bull 和 Throng运行多个 Worker Dynos (Heroku) 时超出 R14 内存配额

我正在使用 Redis、bull 和 throng 为 Node.js 中的后台工作人员创建排队系统。

在 Heroku 上使用一个 worker 实例一切正常,但每当我尝试启动另一个 worker(总共两个)运行我的 worker.js 文件时。在 Heroku 中,我的 worker dynos 出现 R14 Memory Quota Exceeded 错误

我认为这与我的排队系统中某处的内存泄漏有关。当我查看我的日志时,似乎有些任务没有完成,而且 job:id 一直在被 ping 通而没有响应,就像它被挂起一样。

下面是我的 worker.js 文件的精简版

const testQueue = new Queue('test',REdis_URL);


function start() {
  try {
    testQueue.process(maxJobsPerWorker,async job => {
      const res = await getTest(
        job.data.test
      );

      return res.data;
    });
  } catch (err) {
    console.log(err);
  }
}

throng({ workers,lifetime: Infinity },start);

这是我的 redis 控制器,用于将项目添加到队列中

const testQueue = new Queue('test',REdis_URL);

exports.createTest = async (req,res) => {
  const { test } = req.body;
  const queue = testQueue

  const job = await queue.add({
      test
  });
  res.json({ id: job.id });
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。