gpt4 book ai didi

mysql - 齿轮工和失去的 worker

转载 作者:行者123 更新时间:2023-11-29 07:58:07 26 4
gpt4 key购买 nike

我想使用 gearman 作为网络项目的队列系统。因此我尝试了 gearman 和 gearmanManager ,效果很好。但要知道,我问自己,如果 worker 、工作或服务器消失了(例如 php 错误或任何可能的原因),会发生什么。

  • 如果我运行客户端(浏览器)的同步作业,会发生什么情况等待回调并且工作线程/服务器崩溃了?
  • 如果异步作业在工作时发生崩溃,会发生什么情况? gearman会再试一次(因为它作为队列存储在mysql中)还是会忽略它?如果它不被忽略并且工作程序一次又一次崩溃,会发生什么?

我想知道系统是否可扩展(例如通过 NFS)。您能为我提供一些例子或可以借鉴的经验吗?

谢谢大家,祝周末愉快...

菲尔

最佳答案

  1. 如果服务器崩溃,您的客户端将无法连接到任何内容。如何处理取决于您的应用程序。如果工作线程崩溃,并且您正在尝试运行同步任务,则客户端将等待工作线程变得可用,除非您提供了超时值。

  2. 如果执行了异步任务并且工作人员,gearman 将重新排队手头的任务。如果它使每个抓取它的工作人员崩溃,您可能会失去任何活跃的工作人员。 C 版本/gearmand 可以选择调整此行为:

    -j [ --job-retries ] arg (=0) 尝试运行作业的次数 在作业服务器将其删除之前。这 有助于确保糟糕的工作不会 使所有可用的工作人员崩溃。默认为 没有限制。

如果您部署损坏或脆弱的代码,无论您使用哪个系统,您都会遇到问题。错误的代码会破坏应用程序。 :-)

Gearman 设置是可扩展的,但请记住,如果您使用持久队列支持,则每个服务器需要拥有自己的后端。您不能在服务器实例之间共享相同的数据库和表,因为持久队列仅作为备份维护,以防 gearmand 终止并必须重新启动。如果需要,允许您的应用程序轻松地再次对任务进行排队可能会更有用。

关于mysql - 齿轮工和失去的 worker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24574457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com