ギアマンの設定をテストしているときに、奇妙な問題が発生しました。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-server
Ubuntuのジョブサーバーの中には--listen=127.0.0.1 --port=7003
。
Ubuntuでgearmanサーバーを起動するとgearmand -d -p 7003
、ワーカーがジョブサーバーに登録できたので、サーバーの状態を確認して確認しました。しかし、によってギアマンサーバーを起動するsudo service gearman-job-service start
と、ワーカーは登録に失敗しました。
これについていくつかのヒントを教えてください。