代码之家  ›  专栏  ›  技术社区  ›  Coffee Bite

如何在gearman中获得特定类型的排队作业数?

  •  13
  • Coffee Bite  · 技术社区  · 14 年前

    我有很多gearman的客户发送了一份工作,比如job1。

    $client = new GearmanClient();
    $client->addServer();
    $client->doBackground('job1', 'workload');
    

    处理这项工作需要10秒钟。 我想跟踪在任何给定时间有多少“job1”作业等待一个工人处理。我该怎么做?

    6 回复  |  直到 14 年前
        1
  •  31
  •   Nisse Engström sting_roc    8 年前

    为了快速检查,我使用这个bash-one-liner:

    (echo status ; sleep 0.1) | netcat 127.0.0.1 4730
    

    地位 查询。它包含该实例上作业的名称和数量。然后可以使用 grep awk / wc 用于报告和警报。

    显示所有连接工人的查询。

    (echo workers ; sleep 0.1) | netcat 127.0.0.1 4730
    

    管理命令的完整列表,以及输出的含义 http://gearman.org/protocol/

        2
  •  12
  •   iandouglas    8 年前

    要扩展d5ve的答案,请将-w参数添加到netcat连接的“超时”中,否则将无法返回命令提示符。

    $ (echo status ; sleep 0.1) | sudo netcat 127.0.0.1 4730 -w 1
    
        3
  •  8
  •   Đọc truyện hay    9 年前
    telnet localhost 4730
    status
    
    worker_name total_queue currently_running number_of_workers
    job1         1          1                 9
    
        4
  •  3
  •   jchook    6 年前

    gearman_top ,这是 mod-gearman .

    +-----------------------+--------+-------+-------+---------+
    | Name                  | Worker | Avail | Queue | Running |
    +-----------------------+--------+-------+-------+---------+
    | check_results         | 1      | 1     | 0     | 0       |
    | host                  | 3      | 3     | 0     | 0       |
    | service               | 3      | 3     | 0     | 0       |
    | eventhandler          | 3      | 3     | 0     | 0       |
    | servicegroup_jmx4perl | 3      | 3     | 0     | 0       |
    | hostgroup_japan       | 3      | 3     | 0     | 0       |
    +-----------------------+--------+-------+-------+---------+
    
        5
  •  1
  •   Charles    14 年前

    这里有一些选择。第一, if you can grab job handles as you create them

    其次,您可以将Gearman服务器设置为使用 persistent queues ,然后自己对队列运行查询。这可能是两种选择中更简单更干净的。

        6
  •  1
  •   James Butler    14 年前
        7
  •  0
  •   w00t    5 年前

    在ubuntu18.04上我有 gearadmin 默认情况下,二进制文件随gearman包一起安装。

    gearadmin --help
    gearadmin --status 可用于替代netcat替代方案:

    gearadmin --status
    queue1    334     10      10
    

    一行字:
    while :; do gearadmin --status; sleep 1; done