[ 
https://issues.apache.org/jira/browse/THRIFT-5490?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yuxuan Wang reassigned THRIFT-5490:
-----------------------------------

    Assignee: Yuxuan Wang

> Improve memory efficiency in go THeader implementation
> ------------------------------------------------------
>
>                 Key: THRIFT-5490
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5490
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Go - Library
>            Reporter: Yuxuan Wang
>            Assignee: Yuxuan Wang
>            Priority: Major
>
> Currently in go's THeaderTransport implementation, due to THeader's framed 
> nature, there are 2 buffers used, one for read and one for write. The 2 
> buffers are part of THeaderTransport and have the same lifecycle with the 
> transport itself.
> This caused an issue with idle connections (e.g. connections sitting in a 
> pool). For idle connections, their buffers were grew to handle the 
> request/response, but never shrink, even when the connection is sitting in 
> idle. So when a connection pool is used, every idle connection sitting in the 
> pool has a memory profile of largest read + largest write they have ever had 
> in their whole lifecycle, and when we have a server handling large 
> request/response payloads with a lot of idle connections, the memory 
> footprint can grow significant.
> We should use a resource pool, and return the buffers to the pool after done 
> reading/writing, to better manage memory footprint.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to