Colin Patrick McCabe created HTRACE-308:
-------------------------------------------

             Summary: Deserialize WriteSpans requests incrementally rather than 
all at once to optimize GC
                 Key: HTRACE-308
                 URL: https://issues.apache.org/jira/browse/HTRACE-308
             Project: HTrace
          Issue Type: Improvement
          Components: htraced
    Affects Versions: 4.0
            Reporter: Colin Patrick McCabe
            Assignee: Colin Patrick McCabe


We should deserialize WriteSpans requests incrementally rather than all at 
once.  Currently, we can deserialize 63 MB of spans all at once, which 
immediately creates somewhere between 60k and 600k spans, depending on span 
size.  This is hard on the garbage collector because it's a lot of allocations 
all at once, and because it allocates a very large array to hold it all.

It would be better to deserialize spans one at a time and feed them into the 
datastore via the BatchIngestor. This will ensure that we don't have to 
allocate giant arrays of spans all at once.  If the datastore lags behind the 
rate of span ingestion, this will avoid us needing to allocate a bunch of 
memory "up front" which can lead to further slowdowns due to GC.

Also, we should reuse buffers for the RPC handlers, and use buffering while 
deserializing to avoid making lots of small reads from the socket.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to