2017-02-06 3 views
0

Ich versuche Latenz von jeder Schraube in einer Topologie zu messen. Die Latenzzahlen von Storm reichen nicht aus, da wir Perzentile berechnen wollen. In meinem aktuellen Setup misst ich die Latenz der Schraube, indem ich die Zeit misst, die benötigt wird, um die Ausführungsmethode einschließlich des Aufrufs zum Senden abzuschließen. Die Annahme mit der obigen Methode ist, dass die Emulation des Kollektors sofort zurückkehrt, ohne dass die nächste Methode der Bolt-Instanzen aufgerufen wird, selbst wenn derselbe Executor zwischen der aktuellen Bolt-Instanz und der nächsten Bolt-Instanz in der Topologie geteilt wird.Meauring Latency von Storm Schrauben

Antwort

0

Indem Sie den Timer an den Anfang und das Ende Ihrer Execute-Methode (nach dem Emittieren) setzen, sollten Sie in Ordnung sein.

+0

Bedeutet das, emit Methode ist asynchron? – user3612009

+0

Nicht unbedingt. Emit fügt das Tupel wahrscheinlich zu einer internen Warteschlange hinzu, und die nächste Schraube liest aus der Warteschlange, wann immer es bereit ist, das nächste Tupel zu verarbeiten. Also unabhängig davon, was Sie bei der nächsten Schraube tun, emittieren immer die gleiche Zeit und es ist sehr billig Anweisung. Wenn Sie messen möchten, wie lange die Emission dauert, implementieren Sie einfach eine Schraube, die nur emittiert und misst. Sie können dann diese Zahl von der Schraube abziehen, die Sie tatsächlich messen. –

+0

'wahrscheinlich fügt das Tupel hinzu' - Ja, ich nehme auch an, dass dies passiert, aber nur Bestätigung wollen. – user3612009