gearman gibt mir GEARMAN_COULD_NOT_CONNECT, es läuft definitiv

8

Mein Dev-Server ist Debian Squeeze und ich führe Gearman 1.1.5 aus, das ich zusammen mit der php pecl-Erweiterung v1.1.1 aus der Source kompiliert habe

Wenn ich das reverse_client.php Skript ausführen bekomme ich den GEARMAN_COULD_NOT_CONNECT Fehler.

PHP Warning: GearmanClient::do(): send_packet(GEARMAN_COULD_NOT_CONNECT) Failed to send server-options packet -> libgearman/connection.cc:430 in /home/bealers/build/gearman-1.1.1/examples/reverse_client.php on line 26

Es gibt ein paar ähnliche Beiträge hierüber, und alle verweisen darauf, dass GM nicht läuft.

Es wird definitiv ausgeführt.

Ich beginne es mit diesen Parametern:

PARAMS="--queue-type=MySQL --mysql-db=test_db --mysql-user=gearman --mysql-password=gearman"

Wenn ich die gearman_queue-Tabelle in test_db ablege und den Daemon neu starte, wird die Tabelle neu erstellt, so dass ihre mysql-Verbindung in Ordnung ist und eindeutig beginnt.

Ich kann auch auf localhost 4730 telnet, also gibt es keine Firewall-Problem.

Anfangs hatte GM Probleme beim Starten, weil es vor mysql gestartet wurde, also habe ich das init-Skript

bearbeitet %Vor%

und ein update-rd.c gearman-job-server defaults legen fest, dass es nach dem Start beginnt, und es beginnt jetzt beim Hochfahren.

Die einzige andere Sache, die ich mir vorstellen kann, ist, dass ich anfangs über apt installiert hatte, aber die Version war zu alt, also habe ich sie entfernt und aus der Quelle kompiliert. / usr / sbin / gearband existiert nicht mehr, die einzige Version ist / usr / local / sbin / gearband

ps ax | grep gearman zeigt nur einen laufenden Prozess an.

Netstat zeigt nur einen Prozess an, der '

ausführt

tcp 0 0 *:4730 *:* LISTEN 2325/gearmand

Die PECL-Lib scheint in Ordnung:

php -i | grep gearman

%Vor%

Ich habe keine Ideen mehr

    
Darren Beale 14.02.2013, 20:43
quelle

2 Antworten

15

Ich hatte das gleiche Problem und habe sie vor kurzem nach einigen Tagen der Frustration gelöst (schwer zu beheben, da es drei Prozesse gibt, um die ich mich kümmern muss :-))

Es scheint (zumindest in meinem Fall), dass die PHP-Dokumentation für GearmanClient :: addServer () und GearmanWorker :: addServer () falsch ist. Insbesondere scheinen die Dokumente darauf hinzuweisen, dass Hostname und Portnummer optional sind und dass sie localhost und Port 4730 als Standardwerte verwenden, wenn Sie sie nicht angeben. Diese nie funktioniert - mir fiel es heute plötzlich ein, sie explizit für Client- und Workerprozesse zu spezifizieren, und alles begann zu arbeiten.

Geben Sie alle Werte für Hostnamen und Ports an und prüfen Sie, ob dies für Sie funktioniert.

    
Eno 15.02.2013, 18:10
quelle
2

Falls Sie etwas so verwendet haben

  

$ client- & gt; addServer ('127.0.0.1', 4730);

oder

  

$ client- & gt; addServer ();

benutze so etwas

  

$ client- & gt; addServer ('127.0.0.1:4730');

PS - Ich habe localhost IP verwendet, dies kann durch die tatsächliche Host-IP ersetzt werden.

    
Jatin Dhoot 18.04.2016 11:43
quelle

Tags und Links