-
Type: Improvement
-
Status: Closed
-
Priority: Critical
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: Analytics / Stats
-
Tags:
-
Team:NOS
-
Story Points:3
Segment.io events are bundled using an asynchronous listener. During Jan the 14th incident, we identified it as taking a lot of resources because of heavy GC and the way events are mapped to Groovy scripts. Plus, all events bundled are managed through 1 transaction, which can lead to heavy work if a large amount similar events occured.
We need to isolate this load to a worker queue for being able to distribute it across nodes and having control of number of events per transaction.
AC:
- We have a Work that does the mapping and the transport to segment.io event
- SegmentListener is triggering a Work every X mapped events
- Segmentio works are in a separate category (by default)