Domanda

Ho una topologia della tempesta che funziona in un ambiente distribuito su 4 nodi UNIX.

Ho un JMSPout che riceve un messaggio e poi lo inoltra su un Parsebolt che analizzerà il messaggio RAW e creerà un oggetto.

Per aiutare a misurare la latenza il mio jmspout emette l'ora corrente come valore e quindi quando il Parsebolt riceve di nuovo questo otterrà la differenza come la latenza.

Utilizzando questo approccio Sto vedendo 200+ ms che non suona affatto.Qualcuno ha un'idea per quanto riguarda il motivo per cui questo potrebbe essere?

È stato utile?

Soluzione

È probabilmente un problema di threading.La tempesta utilizza lo stesso thread per tutti i becco nexttuple () chiamate e tuple emesse emesse non vengono elaborate fino alla fine della chiamata nexttupla ().C'è anche un ciclo molto stretto che chiama ripetutamente il metodo NextTuple () e può consumare molti cicli se non si mette almeno un breve sonno in prossima implementazione ().

Prova ad aggiungere un sonno (10) ed emettono solo una tupla per nexttuple ().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top