I don't know. I thought about it before but believe it will create some 
design complexity in my application.

As currently I maybe able to re-implement some kind of polling mechanism 
from the ground level, I don't think I'll play that large'n'small buffer 
game. + It's always fun to play with the lower level system call.

But who knows, I may come back to it when I'm in despair.

On Monday, March 6, 2017 at 8:27:05 PM UTC+8, Jakob Borg wrote:
>
> If most of your connections are idle most of the time, and your memory 
> usage comes from something like 
>
> buf := make([]byte, 65536) 
> n, err := conn.Read(buf) // <-- block here for ever 
>
> you could simply use a smaller buffer for the read that takes a long time. 
> For example, if the message is length prefixed, just read into a [4]byte or 
> similar and *then* grab a buffer from a sync.Pool or create one when you 
> know the size to read. Even if the message is not length prefixed but you 
> know it's long, you can still read the first few bytes into a small buffer 
> and then read the rest once that call returns, appending to the first read. 
> This won't be efficient in a tight loop, but if you know a point where may 
> clients idle it may be worth it. 
>
> //jb 
>
> > On 6 Mar 2017, at 09:26, Nick Rio <nick...@gmail.com <javascript:>> 
> wrote: 
> > 
> > The application is working right now. Current work for me is to found a 
> way to reduce it's memory footprint as it will take at least 1GB memory to 
> hold only C10K idle connections. 
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to