【问题标题】:Gearman and lost workersGearman和失去的工人
【发布时间】:2014-07-04 12:33:50
【问题描述】:

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

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

我想知道系统是否是可扩展的(例如通过 NFS)。你有我可以前进的例子或经验吗?

谢谢大家,周末愉快……

菲尔

【问题讨论】:

    标签: mysql symfony gearman


    【解决方案1】:
    1. 如果服务器崩溃,您的客户端将无法连接任何东西。如何处理取决于您的应用程序。如果 Worker 崩溃了,而您正在尝试运行同步任务,则客户端将等待直到有 Worker 可用,除非您提供了超时值。

    2. 如果异步任务被执行并且工作人员,gearman 将重新排队手头的任务。如果它使每个抓住它的工人崩溃,你可能会失去任何活跃的工人。 C-version / gearmand 有一个选项来调整这个行为:

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

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

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

    【讨论】:

    • 您好 fiskfisk,感谢您回答我的问题。这可以帮助我摆脱困境:):)。祝你星期一愉快
    • @user3804760 如果它解决了您的问题,请接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    相关资源
    最近更新 更多