Laravel 中的 Job、Queue 和 Worker 有什么区别?
What is difference between Job, Queue, and Worker in Laravel?
我正在做一个 Laravel 项目。我正在使用作业队列来执行某些功能。我使用 supervisor 来执行 运行 工作监听命令。但是我不太了解这个概念。这是我的问题。
- 我有8个工人。他们如何参与工作队列系统?
- 如果我增加它们的数量,作业处理速度会更快吗?
- 只要我增加它们,它也会占用更多内存吗?如果我的服务器有 16GB 内存,我可以有多少个工人?
- 作业是否进入队列? (下图)
我有8个工人。他们如何参与工作队列系统?
工人可以简单地作为一个processor/user可以一次处理工作。 8 个工人意味着一次可以处理 8 个process/function。
如果我增加它们的数量,作业处理速度会更快吗?
也许是,但也许不是。取决于您的进程和服务器资源,例如 RAM/CPU/Disk 速度。如果您的 运行 工作人员消耗高资源,它可以使服务器 freeze/slow,但如果每个工作人员的资源消耗低,它可以使队列更快。
只要我增加它们,它也会占用更多内存吗?如果我的服务器有 16GB 内存,我可以有多少工人?
是的,取决于有多少空闲 RAM 以及每个进程消耗多少 RAM。如果空闲 RAM 为 10gb,平均进程消耗 100mb RAM,那么最大 worker 应该为 100。也许你仍然可以增加它,但它会影响其他 worker 进程。而且 CPU 和磁盘使用也是重要因素。
job去queque? (下图)
抱歉,我不太了解您的形象。但是如果你有 8 个工人,队列应该只有 2 个。
你能解释一下作业和队列的区别吗?
作业是 class,其中包含 function/process,通常创建到 App\Jobs
文件夹。一个作业可以排队或 dispatched/executed 多次。队列是当您有空闲工作人员时需要执行的作业列表。如果你派遣一个工作到队列,它会去pending queue
,如果你有空闲的工人,这个工作将被执行或去running queue
。作业 executed/finished 后,作业将从队列列表中删除。
我正在做一个 Laravel 项目。我正在使用作业队列来执行某些功能。我使用 supervisor 来执行 运行 工作监听命令。但是我不太了解这个概念。这是我的问题。
- 我有8个工人。他们如何参与工作队列系统?
- 如果我增加它们的数量,作业处理速度会更快吗?
- 只要我增加它们,它也会占用更多内存吗?如果我的服务器有 16GB 内存,我可以有多少个工人?
- 作业是否进入队列? (下图)
我有8个工人。他们如何参与工作队列系统?
工人可以简单地作为一个processor/user可以一次处理工作。 8 个工人意味着一次可以处理 8 个process/function。
如果我增加它们的数量,作业处理速度会更快吗?
也许是,但也许不是。取决于您的进程和服务器资源,例如 RAM/CPU/Disk 速度。如果您的 运行 工作人员消耗高资源,它可以使服务器 freeze/slow,但如果每个工作人员的资源消耗低,它可以使队列更快。
只要我增加它们,它也会占用更多内存吗?如果我的服务器有 16GB 内存,我可以有多少工人?
是的,取决于有多少空闲 RAM 以及每个进程消耗多少 RAM。如果空闲 RAM 为 10gb,平均进程消耗 100mb RAM,那么最大 worker 应该为 100。也许你仍然可以增加它,但它会影响其他 worker 进程。而且 CPU 和磁盘使用也是重要因素。
job去queque? (下图)
抱歉,我不太了解您的形象。但是如果你有 8 个工人,队列应该只有 2 个。
你能解释一下作业和队列的区别吗? 作业是 class,其中包含 function/process,通常创建到
App\Jobs
文件夹。一个作业可以排队或 dispatched/executed 多次。队列是当您有空闲工作人员时需要执行的作业列表。如果你派遣一个工作到队列,它会去pending queue
,如果你有空闲的工人,这个工作将被执行或去running queue
。作业 executed/finished 后,作业将从队列列表中删除。