2010-07-31 13 views

risposta

30

per il controllo rapido, io uso questo bash one-liner:

(echo status ; sleep 0.1) | netcat 127.0.0.1 4730 

questo apre una connessione a un'istanza Gearman in esecuzione su localhost, e invia il stato query. Questo contiene il nome e il numero di lavori su quell'istanza. Le informazioni possono quindi essere elaborate con grep/awk/wc ecc. Per la segnalazione e l'avviso.

Anche io faccio lo stesso con worker query che mostra tutti i lavoratori connessi.

(echo workers ; sleep 0.1) | netcat 127.0.0.1 4730 

Il sonno è di mantenere la connessione aperta abbastanza a lungo per la risposta.

L'elenco completo dei comandi amministrativi e il significato dell'output è http://gearman.org/protocol/. Basta cercare "Protocollo amministrativo".

+1

Solo per curiosità: perché il sonno 0.1 necessaria? Il comando equivalente per es. memcached non ha bisogno del sonno. – mjs

+0

Ho dovuto usare nc invece di netcat ma per il resto funzionava alla grande! – Nate

1

Non sembra che ci siano modi immediati per ottenere queste informazioni.

Ecco alcune opzioni. Innanzitutto, if you can grab job handles as you create them (cerca "Parlare di controllo dello stato"), puoi archiviarli in un posto centrale e interrogarli su qualsiasi client.

In secondo luogo, è possibile impostare il server Gearman per utilizzare persistent queues e quindi eseguire una query contro la coda. Questo potrebbe essere il più facile e più pulito tra le due opzioni.

+0

+1 per l'utilizzo di code persistenti: questo permette anche di avere un migliore controllo sulla coda –

1

Gearmand ha un'interfaccia telnet che è possibile richiedere. (i dettagli esatti del protocollo possono essere trovati sul sito web di Gearman - http://gearman.org/?id=protocol)

Ho usato questo codice qui come punto di partenza per il mio. https://github.com/liorbk/php/blob/master/GearmanTelnet.php (questo codice è perfettamente bene per sé e si dovrebbe essere in grado di abbandonare l'uso fuori dalla scatola)

E 'una meno bella soluzione, ma fino a quando qualcuno migliora l'interfaccia Gearman di amministrazione in modo da poter parlare direttamente tramite PHP o scrive un plugin per esso, si è da soli

12

Per espandere la risposta di d5ve, aggiungere un parametro -w a "timeout" della connessione netcat, altrimenti non si torna mai al prompt dei comandi.

$ (echo status ; sleep 0.1) | sudo netcat 127.0.0.1 4730 -w 1 
+0

Non posso proporre una modifica di un carattere, ma l'uso di # come carattere di prompt fa sì che il parser interpreti la riga di codice come un commento e lo offusca. – bschlueter

4
telnet localhost 4730 
status 

worker_name total_queue currently_running number_of_workers 
job1   1   1     9 
+0

Grazie per la spiegazione delle colonne – Aleksey

Problemi correlati