1

ギアマンの設定をテストしているときに、奇妙な問題が発生しました。PCが1台しかなく、ギアマンのクロスプラットフォーム機能をテストしたいので、Win7システムの仮想ボックスのUbuntu 12.04にギアマンジョブサーバーをインストールし、Win7でワーカーを起動しました。virtualboxとホストマシンは互いにスムーズにpingを実行します。これが私の労働者のコードです:

#!/usr/bin/perl
use Gearman::Worker;

my $worker1 = Gearman::Worker->new;
$worker1->job_servers('10.38.50.158');

# register job
$worker1->register_function( print_task1 => \&print_task1 ); 

$worker1->work while 1; 

sub print_task1{
    my ($job) = @_;
    print "Worker1 starts...\n";
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
    printf("%d:%d:%d\n",$hour,$min,$sec);
    sleep 10;
    $job->set_status(50,100);
    sleep 10;
    $job->set_status(100,100);
}

そしてPARAMS/etc/init.d/gearman-job-serverUbuntuのジョブサーバーの中には--listen=127.0.0.1 --port=7003

Ubuntuでgearmanサーバーを起動するとgearmand -d -p 7003、ワーカーがジョブサーバーに登録できたので、サーバーの状態を確認して確認しました。しかし、によってギアマンサーバーを起動するsudo service gearman-job-service startと、ワーカーは登録に失敗しました。

これについていくつかのヒントを教えてください。

4

2 に答える 2

1

--listenサーバーがリッスンする必要があるアドレスを示します。を使用する--listen=127.0.0.1と、サーバーは localhost のワーカー登録のみをキャッチします。デフォルト値はINADDR_ANYで、このオプションを空のままにしておくと、サーバーはすべてのマシンをリッスンします。

于 2013-03-14T08:20:38.117 に答える
0

ついに私は理由を見つけました:ジョブサーバーの入力PARAMSは、 !なし/etc/init.d/gearman-job-serverでのみである必要があります。ここで何が問題なのかわかりません。試してみました。私はまだギアマンについて学んでいますが、私は以前にかなり愚かな間違いをしたと確信しています。--port=7003--listen=127.0.0.1

于 2013-03-11T08:50:47.697 に答える