【问题标题】:gearman task queue overflows with compleated tasksgearman 任务队列因已完成的任务而溢出
【发布时间】:2013-03-28 07:07:18
【问题描述】:

我在我的项目中使用 Gearman Job 服务器。我使用“gearman-ruby”宝石。 应用程序中有一个任务队列。一项任务有 4 个部分。
适当地,我有 4 名工人来解决这部分任务。

我的系统在没有 Gearman 的情况下在 10 分钟内解决了 1 个任务。但是当我使用 gearman 时,解决 10 个任务的时间是 2-3 小时 :(
Gearman 队列位于 mysql 中。队列溢出了。

Cron 启动设置任务的客户端。一项任务 - 解析一页。 第一名工人 - 获取页面(初始化),第二名 - 获取照片(图像),第三名 - 获取 cmets(文本),第四名 - 获取特征(文本)。第一个工作人员获取页面,其他工作人员从该页面解析不同的数据。

齿轮配置:



    $cat /etc/sysconfig/gearmand 
    ## Settings for gearmand
    OPTIONS="--listen=127.0.0.1
             --job-retries=3 \
             --log-file=/var/log/gearman.log \
             --queue-type=MySQL \
             --mysql-host=localhost \
             --mysql-port=3306 \
             --mysql-db=gearman \
             --mysql-table=queue"

    $gearmand --version
    gearmand 0.35

请帮我设置齿轮以加快工作速度

【问题讨论】:

  • 你提供的东西太少了。请添加更多详细信息:(合理扩展)任务的性质、当前服务器设置、执行实际处理的代码(工作人员)。正如描述的那样,问题可能是任何/一切。
  • 客户端设置任务,但我在 10-15 分钟后在 gearman.queue(mysql 中的表)中看到了这个任务。在工人开始执行任务之前有很长的延迟。当我仅通过一项任务测试 Gearman 时,我正在观看它。这就是为什么我认为问题出在德国环境......
  • 将“--threads=12”添加到配置中。工人开始执行任务之前的延迟显着减少。但是 Gearman 仍然工作得很慢……而且队列中满是任务。任务已解决,但仍然在 gearman.queue :(
  • 我在我的代码中发现了一个事件,通过该事件任务不会返回“true”。在 gearman 协议中,完成的任务必须返回“真”。我的问题解决了:)
  • 非常感谢,fmendez!

标签: ruby gearman


【解决方案1】:
  1. 我在我的代码中发现了一个事件,通过该事件任务不会返回“true”。在 gearman 协议中,完成的任务必须返回 'true'。
  2. 我设置了没有持久性存储的 gearman 配置。


    OPTIONS="--listen=127.0.0.1
                 --job-retries=3 \
                 --log-file=/var/log/gearman.log \
                 --threads=12"

З.我使用 '--threads=threds_count' 参数为 gearman 作业服务器添加了更多线程。

现在我的系统运行得又快又稳定! :)


如果您使用持久性存储并且您的队列溢出:您可以定期运行脚本来清理 gearman_queue。我通过定期调用 sh 脚本解决了这个问题(为此我使用了 cron):



    # stop gearman
    sudo /etc/init.d/gearman stop
    # delete tasks from DB
    mysql -Bse 'DELETE FROM queue' gearman -u root
    # start gearmand back
    sudo /etc/init.d/gearman start
    echo '*** gearman queue cleaned. ***'

【讨论】:

  • 和!!!你必须明白,geaman 协议说每个任务都必须返回 TRUE。如果任务未返回 true - 作业服务器认为该任务未完成并尝试再次启动此任务。这就是为什么我的队列满了而且​​速度慢的原因。
猜你喜欢
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 2014-12-03
  • 1970-01-01
相关资源
最近更新 更多