14

私には、job1などのジョブを送信するギアマンクライアントが多数います。

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

このジョブの処理には、たとえば10秒かかります。ある時点でワーカーが作業するのを待っている「job1」ジョブの数を追跡したいと思います。どうやってやるの?

4

7 に答える 7

31

すばやく確認するために、このbashワンライナーを使用します。

(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/にあります。「管理プロトコル」を検索するだけです。

于 2011-01-25T13:19:58.573 に答える
12

d5veの答えを拡張するには、-wパラメータを追加してnetcat接続を「タイムアウト」します。そうしないと、コマンドプロンプトに戻ることができません。

$ (echo status ; sleep 0.1) | sudo netcat 127.0.0.1 4730 -w 1
于 2011-04-29T21:43:55.837 に答える
9
telnet localhost 4730
status

worker_name total_queue currently_running number_of_workers
job1         1          1                 9
于 2016-01-19T04:02:00.440 に答える
3

mod-gearmangearman_topの一部であるを使用します。

Webサイトからの出力例:

+-----------------------+--------+-------+-------+---------+
| 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       |
+-----------------------+--------+-------+-------+---------+
于 2018-03-12T16:41:17.230 に答える
1

この情報をすぐに入手する方法はないようです。

ここにいくつかのオプションがあります。まず、ジョブハンドルを作成するときに取得できる場合(「ステータスの確認について」を検索)、それらを中央の場所に保存して、任意のクライアントからクエリを実行できます。

次に、永続キューを使用するようにGearmanサーバーを設定してから、自分でキューに対してクエリを実行できます。これは、2つのオプションの中でより簡単でクリーンな場合があります。

于 2010-07-31T17:33:31.643 に答える
1

Gearmandには、クエリ可能なTelnetインターフェイスがあります。(プロトコルの正確な詳細は、ギアマンのWebサイト(http://gearman.org/?id=protocol )にあります)

私はここでこのコードを自分自身を転がすための出発点として使用しました。 https://github.com/liorbk/php/blob/master/GearmanTelnet.php (このコードはそれ自体で完全に優れており、箱から出してすぐに使用できるはずです)

これはあまり良い解決策ではありませんが、誰かがギアマンの管理インターフェースを改善して、PHPを介して直接話すか、プラグインを作成するまでは、あなたは自分でやっています

于 2011-01-20T10:27:25.073 に答える
0

Ubuntu 18.04ではgearadmin、gearmanパッケージとともにバイナリがデフォルトでインストールされています。

gearadmin --help
gearadmin --statusnetcatの代わりに使用できます:

gearadmin --status
queue1    334     10      10

そしてワンライナー:
while :; do gearadmin --status; sleep 1; done

于 2019-08-06T14:02:07.400 に答える