Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Conversation

@tiennampham23
Copy link

No description provided.

@tiennampham23 tiennampham23 requested a review from a team as a code owner December 5, 2023 16:16
@eitu5ami
Copy link
Contributor

eitu5ami commented Dec 5, 2023

@tiennampham23 Thank you for your contribution! Could you provide some context behind this change?

@tiennampham23
Copy link
Author

@eitu5ami I apologize for missing the description earlier. The buffer pool is used to prevent the allocation of a large number of byte slices when uploading a significant amount of data. We utilize the allocated buffer pool to store the response bytes.

If we do not use the buffer pool, the reserve proxy will allocate the byte slices with every request, and the garbage collection will clear it afterward. As the number of requests increases, the memory usage will peak at the time the garbage collector is running.

As the documentation

// BufferPool optionally specifies a buffer pool to
// get byte slices for use by io.CopyBuffer when
// copying HTTP response bodies.
BufferPool BufferPool



if p.BufferPool != nil {
   buf = p.BufferPool.Get()
   defer p.BufferPool.Put(buf)
}

@eitu5ami
Copy link
Contributor

@tiennampham23 I will work on it once I merge a few of our outstanding changes. I will keep you posted.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants