【问题标题】:What is difference between Job, Queue, and Worker in Laravel?Laravel 中的 Job、Queue 和 Worker 有什么区别?
【发布时间】:2020-10-15 22:49:45
【问题描述】:

我正在做一个 Laravel 项目。我正在使用作业队列来执行某些功能。我使用主管来运行作业监听命令。但我不太理解这个概念。这是我的问题。

  1. 我有 8 名工人。他们如何参与作业队列系统?
  2. 如果我增加它们的数量,作业处理速度会更快吗?
  3. 只要我增加它们,它也会占用更多的内存吗?如果我的服务器有 16GB 内存,我可以有多少工作人员?
  4. 作业是否进入队列? (下图)

【问题讨论】:

    标签: laravel queue jobs supervisord worker


    【解决方案1】:
    1. 我有 8 名工人。他们如何参与作业队列系统?

      Worker 可以简单地作为可以一次处理工作的处理器/用户。 8 个工人意味着一次可以处理 8 个进程/功能。

    2. 如果我增加它们的数量,作业处理速度会更快吗?

      也许是,但也许不是。取决于您的进程和服务器资源,例如 RAM/CPU/磁盘速度。如果您正在运行的工作人员消耗大量资源,则可能会使服务器冻结/变慢,但如果每个工作人员的资源消耗较低,则可能会使队列速度更快。

    3. 只要我增加它们,它也会占用更多的内存吗?如果我的服务器有 16GB 内存,我可以有多少工作人员?

      是的,取决于有多少可用 RAM 以及每个进程消耗多少 RAM。如果空闲内存 10gb,平均进程消耗 100mb RAM,那么最大工作线程数应该是 100。也许你仍然可以增加它,但它会影响其他工作进程。此外,CPU 和磁盘使用率也是重要因素。

    4. 工作去queque吗? (下图)

      抱歉,我不太了解您的图片。但是如果你有 8 个工人,队列应该只有 2 个。

    5. 你能解释一下工作和队列之间的区别吗? Job 是一个包含函数/进程的类,通常创建到App\Jobs 文件夹。一个作业可以多次排队或分派/执行。队列是当您有空闲工作人员时需要执行的作业列表。如果您将作业发送到队列,它将转到pending queue,如果您有空闲的工作人员,则作业将被执行或转到running queue。作业执行/完成后,该作业将从队列列表中删除。

    【讨论】:

    • #4。作业是否排队?你能解释一下工作和队列之间的区别而不是那个问题吗?
    • 您的回答对我很有帮助。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2018-05-21
    • 2022-06-24
    相关资源
    最近更新 更多