You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Yuxuan Wang (Jira)" <ji...@apache.org> on 2021/12/16 22:33:00 UTC
[jira] [Assigned] (THRIFT-5490) Improve memory efficiency in go THeader implementation
[ 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)